2012-08-27 14 views
5

socket_t :: gönderme işlevi örnekleri, iletinin başarıyla gönderilip gönderilmediğini belirtmek için bir boole döndürür, ancak bu dönüş değerini denetleyen örnek kod görmedim. 0MQ C++ API C hataları göre 0MQ ile gönderimin dönüş değerini C++ ile kontrol etmek gerekli midir?

istisnalar dönüştürülür: altta yatan ØMQ C kütüphanesi fonksiyonları tarafından bildirilen

Tüm hatalar otomatik bağlanma C++ dile göre istisnalar dönüştürülür. Zmq :: error_t sınıfı std :: exception sınıfından türetilir ve hata kodunu insan tarafından okunabilir dizeye dönüştürmek için zmq_strerror() işlevini kullanır.

o gönderme dönüş değerini kontrol etmek gerekli mi? Gönderme işlevinin yanlış döndüğü, ancak bir istisna atmayacağı herhangi bir durum var mı? source code itibaren

cevap

3

:

inline bool send (message_t &msg_, int flags_ = 0) 
{ 
    int rc = zmq_send (ptr, &msg_, flags_); 
    if (rc == 0) 
     return true; 
    if (rc == -1 && zmq_errno() == EAGAIN) 
     return false; 
    throw error_t(); 
} 

Yani cevap var - zmq_send EAGAIN hata ayarlar false döndürecektir gönderin. Bunun ne zaman olacağını anlamak için, zmq_socket ve zmq_setsockopt belgelerini okuyun.

Kullandığınız soket EAGAIN'i yükseltebilir ve bu koşulla baş etmek istiyorsanız, dönüş değerini kontrol etmelisiniz. Örneğin, iletiyi sıraya koyarak ve daha sonra yeniden denemeyle başa çıkabilirsin.

İlgili konular