У меня есть функция обратного вызова, которая связана с 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
}
Теперь мой вопрос: есть ли способ сравнить ошибку byitself, а не по значению или по строке? Что-то вроде (теперь это составлено)
if ( error == boost::system::error::types::success )
Потому что то, что мне не нравится в первом предположении, заключается в том, что мне нужно создать строку только для проверки, которая, на мой взгляд, не нужна. Второй способ заключается в том, что мне нужно найти все коды ошибок, если я хочу проверить что-то другое? Итак, есть ли перечисления или способы проверки ошибки или у меня есть один из двух предложенных способов?