2010-10-04 10 views
24

Qualcuno sa dove trovare un riferimento per i codici di errore boost. In particolare, i codici di errore restituiti dai gestori di socket asincroni ?, Google e i file di intestazione grezzi si sono esauriti.Codice di errore boost codice

+0

non so spinta, ma se si è fortunati, si può ottenere gli stessi codici di errore come ciò che è in 'errno. h'. Su Linux, è '/ usr/include/asm-generic/errno-base.h' e'/usr/include/asm-generic/errno.h'), vedi http://lxr.linux.no/linux/ include/asm-generic/errno-base.h e http://lxr.linux.no/linux/include/asm-generic/errno.h. – pts

+0

la tua domanda è stata risolta ora? –

+0

Sì, mio ​​male, sono stato sviato. I codici di errore sono derivati ​​dai codici di sistema. Per Windows questi possono essere trovati qui: http://msdn.microsoft.com/en-us/library/ms681381%28VS.85%29.aspx. Per Linux, l'intestazione principale è /usr/incude/errno.h. Nota che dovrai eseguire un po 'di scavo su Linux poiché i codici effettivi sono memorizzati in un file più oscuro, come /usr/include/asm-generic/errno.h –

risposta

6

molto probabilmente vuole

è incluso nel ASIO documentation.

+0

'Impossibile aprire il file include:' boost/asio /errors.hpp ': Nessun file o directory di questo tipo' ne sei sicuro? Io uso boost 1.55 e non funziona. Altro asio include causa nessun problema. –

+0

In Modular Boost (la mia versione è 1.6.1) il file "error_codes.hpp" è in boost/system. I codici di errore sono tutti definiti in un'enumerazione, ma la maggior parte di essi sono valori assegnati da macro esistenti, ad es. address_family_not_supported = EAFNOSUPPORT. Queste macro sono integrate da "boost/cerrno.hpp", ma dovrebbero essere definite dal "errno.h" del sistema, "/usr/include/asm/errno.h". I valori sembrano essere standardizzati su sistemi Unix/Linux, il che significa che sono abbastanza facili da cercare, ma AFAIK/capire le definizioni Boost sono in parte lì per eliminare questo tipo di lavoro ingrato. Questo aiuta? –

40

ho estratto i valori di errore da ASIO/error.hpp su Linux (sto usando solo intestazione ASIO non boost :: ASIO tra l'altro), eccoli:

asio::error::access_denied 13 
asio::error::address_family_not_supported 97 
asio::error::address_in_use 98 
asio::error::already_connected 106 
asio::error::already_started 114 
asio::error::broken_pipe 32 
asio::error::connection_aborted 103 
asio::error::connection_refused 111 
asio::error::connection_reset 104 
asio::error::bad_descriptor 9 
asio::error::fault 14 
asio::error::host_unreachable 113 
asio::error::in_progress 115 
asio::error::interrupted 4 
asio::error::invalid_argument 22 
asio::error::message_size 90 
asio::error::name_too_long 36 
asio::error::network_down 100 
asio::error::network_reset 102 
asio::error::network_unreachable 101 
asio::error::no_descriptors 24 
asio::error::no_buffer_space 105 
asio::error::no_memory 12 
asio::error::no_permission 1 
asio::error::no_protocol_option 92 
asio::error::not_connected 107 
asio::error::not_socket 88 
asio::error::operation_aborted 125 
asio::error::operation_not_supported 95 
asio::error::shut_down 108 
asio::error::timed_out 110 
asio::error::try_again 11 
asio::error::would_block 11 

Se si desidera generare la vostra lista, questo dovrebbe risparmiare un paio di minuti di copia e incolla:

std::cout << "asio::error::access_denied " << asio::error::access_denied << std::endl; 
std::cout << "asio::error::address_family_not_supported " << asio::error::address_family_not_supported << std::endl; 
std::cout << "asio::error::address_in_use " << asio::error::address_in_use << std::endl; 
std::cout << "asio::error::already_connected " << asio::error::already_connected << std::endl; 
std::cout << "asio::error::already_started " << asio::error::already_started << std::endl; 
std::cout << "asio::error::broken_pipe " << asio::error::broken_pipe << std::endl; 
std::cout << "asio::error::connection_aborted " << asio::error::connection_aborted << std::endl; 
std::cout << "asio::error::connection_refused " << asio::error::connection_refused << std::endl; 
std::cout << "asio::error::connection_reset " << asio::error::connection_reset << std::endl; 
std::cout << "asio::error::bad_descriptor " << asio::error::bad_descriptor << std::endl; 
std::cout << "asio::error::fault " << asio::error::fault << std::endl; 
std::cout << "asio::error::host_unreachable " << asio::error::host_unreachable << std::endl; 
std::cout << "asio::error::in_progress " << asio::error::in_progress << std::endl; 
std::cout << "asio::error::interrupted " << asio::error::interrupted << std::endl; 
std::cout << "asio::error::invalid_argument " << asio::error::invalid_argument << std::endl; 
std::cout << "asio::error::message_size " << asio::error::message_size << std::endl; 
std::cout << "asio::error::name_too_long " << asio::error::name_too_long << std::endl; 
std::cout << "asio::error::network_down " << asio::error::network_down << std::endl; 
std::cout << "asio::error::network_reset " << asio::error::network_reset << std::endl; 
std::cout << "asio::error::network_unreachable " << asio::error::network_unreachable << std::endl; 
std::cout << "asio::error::no_descriptors " << asio::error::no_descriptors << std::endl; 
std::cout << "asio::error::no_buffer_space " << asio::error::no_buffer_space << std::endl; 
std::cout << "asio::error::no_memory " << asio::error::no_memory << std::endl; 
std::cout << "asio::error::no_permission " << asio::error::no_permission << std::endl; 
std::cout << "asio::error::no_protocol_option " << asio::error::no_protocol_option << std::endl; 
std::cout << "asio::error::not_connected " << asio::error::not_connected << std::endl; 
std::cout << "asio::error::not_socket " << asio::error::not_socket << std::endl; 
std::cout << "asio::error::operation_aborted " << asio::error::operation_aborted << std::endl; 
std::cout << "asio::error::operation_not_supported " << asio::error::operation_not_supported << std::endl; 
std::cout << "asio::error::shut_down " << asio::error::shut_down << std::endl; 
std::cout << "asio::error::timed_out " << asio::error::timed_out << std::endl; 
std::cout << "asio::error::try_again " << asio::error::try_again << std::endl; 
std::cout << "asio::error::would_block " << asio::error::would_block << std::endl; 
Problemi correlati