У меня есть функция обратного вызова, связанная с boost::asio::deadline_timer
. Теперь функция вызывается, когда таймер отменен или истекает. Так как мне нужно различать эти два случая, мне нужно проверить переданный код ошибки. Основной код будет выглядеть так:
void CameraCommand::handleTimeout(const boost::system::error_code& error)
{
std::cout << "\nError: " << error.message() << "\n";
return;
}
Теперь, когда вызывается обработчик из-за истечения времени таймера, код ошибки равен Success
, а при отмене таймера код ошибки Operation canceled
.
Теперь мой вопрос: как правильно проверить, что случилось?
Предложение 1:
if( error.message() == "Success" )
{
// Timer expired
}
else
{
// Timer cancelled
}
Предложение 2:
if( error.value() == 0 )
{
// Timer expired
}
else
{
// Timer cancelled
}
Теперь у меня вопрос - есть ли способ сравнить ошибку самостоятельно, а не по значению или по строке? Нечто подобное (это сделано сейчас)
if ( error == boost::system::error::types::success )
Потому что в первом предложении мне не нравится то, что мне нужно создать строку только для проверки, что, на мой взгляд, не нужно. Второй способ имеет неудобство, что мне нужно искать все коды ошибок, если я хочу проверить что-то другое?
Так есть ли перечисления или способы проверки на наличие ошибки или у меня есть один из двух предложенных способов?