Здравствуйте, kvser, Вы писали:
K>Необходимо при отсутствии данных в течение некоторого времени записать в socket тестовую посылку. Может быть следующая последовательность событий:
K>1) прочитали часть посылки
K>2) сработал таймер ???
K>Каким образом можно избежать данной последовательности?
K>Данная последовательность не должна появляться, потому как после чтения чего-либо из socket, таймер должен остановиться и после получения всей посылки запуститься.
Не совсем понятно что означает "посылка". Это какая-то структура переменной длины или фиксированный массив байт?
async_read вызовет хендлер только при полном заполнении буффера или при ошибке. Если посылка целиком умещается в буфер, то такая ситуация невозможна, при условии что io_service::run() запущен в одном потоке.
K>Думаю что надо использовать вариант async_read для чтения с условием, а в обработчике проверки условия после первого байта останавливать таймер, а после последнего запускать
Получите первый байт, остановите таймер, после этого произойдет задержка и следующий байт получите только через 10 часов, а таймер то выключен