Bir boost::asio::deadline_timer
bağlı bir geri arama fonksiyonu var. Şimdi, zamanlayıcı iptal edildiğinde veya sona erdiğinde işlev çağrılır. Bu iki durum arasında ayrım yapmam gerektiğinden, geçirilen Hata kodunu kontrol etmem gerekiyor. Temel kodu şöyle olacaktır: Zamanlayıcı hata kodu iptal edilir zamanlayıcı hata kodu Success
olduğunu sona erdiğinden Handler denir ŞimdiYükseltme Hatası Kodunun uygun bir şekilde nasıl onaylanması gerekir?
void CameraCommand::handleTimeout(const boost::system::error_code& error)
{
std::cout << "\nError: " << error.message() << "\n";
return;
}
, Operation canceled
olduğunu.
Şimdi benim sorum olacaktı, ne kadar uygun olanları kontrol etmek için?
Öneri 1:
if(error.message() == "Success")
{
// Timer expired
}
else
{
// Timer cancelled
}
Öneri 2:
if(error.value() == 0)
{
// Timer expired
}
else
{
// Timer cancelled
}
Şimdi sorum şu - byitself değere göre değil, veya dize hatayı karşılaştırmak için herhangi bir yolu var mı? Böyle bir şey (bu şimdi oluşur)
if (error == boost::system::error::types::success)
ne ilk öneri hakkında sevmiyorum ben sadece Bence tür gereksiz çek, bir dize oluşturmak gerektiğini çünkü. İkinci yol dezavantajı varsa, başka bir şeyi kontrol etmek istersem, tüm hata kodlarını aramam gerekecek mi? Yani herhangi çeteleler veya yolları hata olup olmadığını kontrol etmek vardır yoksa iki kişiden biri yollarını tavsiye do?
Harika - tam olarak aradığım şey! Teşekkür ederim!!! – Toby
Hmm, yanlış anlayabilirim. Bu hata_kodları error_conditions ile karşılaştırmalı ve karşılaştırmalar için value() kullanmamamızı söylüyor. http://blog.think-async.com/2010/04/system-error-support-in-c0x-part-2.html –
Bu yanlıştır. boost error_code kategorileri ve değerleri vardır. Aynı değer birden fazla kategoride bulunabilir. İkisini de kontrol etmelisin. –