Когда обработчик операции чтения возвращает ошибку, означает, что соединение сломано/сбой/вниз? Есть ли смысл начинать новую асинхронную операцию?Что делать после отказа обработчика?
Я имею в виду, что казуистика может быть очень сложной в зависимости от различных возможных ошибок.
void ReadHandler(const boost::system::error_code& error, size_t bytes_transferred)
{
if(!error)
{
// OK
}
else
{
// does it make any sense to continue and start another async operation ?
// or I have to check the error with error.value() and possibly close
// the session or stop reading...etc ?
}
Как узнать, может ли соединение использоваться? Когда ошибка чтения возникает с уровнем TCP ниже, потому что что-то пошло не так в связи?
Если честно, я не думал о подсчете ошибок. Кажется, это хорошая идея (не уверен, как закрыть сокет, если первая ошибка «смертная», потому что предполагается, что обработчик не будет вызван снова) – ChrisPeterson