socket_error_handler_pos.hpp
Go to the documentation of this file.
00001 
00008 /*****************************************************************************
00009 ** Ifdefs
00010 *****************************************************************************/
00011 
00012 #ifndef ECL_DEVICES_SOCKET_ERROR_HANDLER_POS_HPP_
00013 #define ECL_DEVICES_SOCKET_ERROR_HANDLER_POS_HPP_
00014 
00015 /*****************************************************************************
00016 ** Cross platform
00017 *****************************************************************************/
00018 
00019 #include <ecl/config/ecl.hpp>
00020 #ifndef ECL_IS_APPLE
00021 #ifdef ECL_IS_POSIX
00022 
00023 /*****************************************************************************
00024 ** Includes
00025 *****************************************************************************/
00026 
00027 #include <errno.h>
00028 #include <string>
00029 #include <ecl/errors/handlers.hpp>
00030 #include <netdb.h> // gethostbyname
00031 
00032 /*****************************************************************************
00033 ** Namespaces
00034 *****************************************************************************/
00035 
00036 namespace ecl {
00037 namespace devices {
00038 
00039 /*****************************************************************************
00040 ** Methods
00041 *****************************************************************************/
00047 inline ecl::Error socket_error() {
00048   switch( errno ) {
00049       case ( EACCES )     : return ecl::Error(ecl::OpenError);
00050       case ( EAFNOSUPPORT): return ecl::Error(ecl::NotSupportedError);
00051       case ( EINVAL )     : return ecl::Error(ecl::InvalidArgError);
00052       case ( EMFILE )     : return ecl::Error(ecl::OutOfRangeError);
00053       case ( ENFILE )     : return ecl::Error(ecl::OutOfResourcesError);
00054       case ( ENOBUFS )    : return ecl::Error(ecl::MemoryError);
00055       case ( ENOMEM )     : return ecl::Error(ecl::MemoryError);
00056       case ( EPROTONOSUPPORT )    : return ecl::Error(ecl::NotSupportedError);
00057               default             : return ecl::Error(UnknownError);
00058   }
00059 }
00065 inline ecl::Error bind_error() {
00066   switch( errno ) {
00067       case ( EACCES )     : return ecl::Error(ecl::PermissionsError);
00068       case ( EADDRINUSE ) : return ecl::Error(ecl::BusyError);
00069       case ( EBADF )      : return ecl::Error(ecl::InvalidObjectError);
00070       case ( EINVAL )     : return ecl::Error(ecl::BusyError);
00071       case ( ENOTSOCK )   : return ecl::Error(ecl::InvalidObjectError);
00072       case ( EADDRNOTAVAIL ) : return ecl::Error(ecl::InvalidObjectError);
00073       case ( EFAULT )     : return ecl::Error(ecl::OutOfRangeError);
00074       case ( ELOOP )      : return ecl::Error(ecl::SystemFailureError);
00075       case ( ENAMETOOLONG )  : return ecl::Error(ecl::InvalidArgError);
00076       case ( ENOENT )     : return ecl::Error(ecl::InvalidObjectError);
00077       case ( ENOMEM )     : return ecl::Error(ecl::MemoryError);
00078       case ( ENOTDIR )    : return ecl::Error(ecl::InvalidArgError);
00079       case ( EROFS )      : return ecl::Error(ecl::PermissionsError);
00080               default             : return ecl::Error(UnknownError);
00081   }
00082 }
00088 inline ecl::Error accept_error() {
00089   switch( errno ) {
00090               case ( EWOULDBLOCK ) : return ecl::Error(ecl::BlockingError);
00091               case ( EBADF )       : return ecl::Error(ecl::InvalidObjectError);
00092               case ( ECONNABORTED ): return ecl::Error(ecl::InterruptedError);
00093               case ( EINTR )       : return ecl::Error(ecl::InterruptedError);
00094               case ( EINVAL )      : return ecl::Error(ecl::UsageError);
00095               case ( EMFILE )      : return ecl::Error(ecl::OutOfResourcesError);
00096               case ( ENFILE )      : return ecl::Error(ecl::OutOfResourcesError);
00097               case ( ENOTSOCK )    : return ecl::Error(ecl::InvalidObjectError);
00098               case ( EOPNOTSUPP )  : return ecl::Error(ecl::InvalidObjectError);
00099               case ( EFAULT )      : return ecl::Error(ecl::PermissionsError);
00100               case ( ENOBUFS )     : return ecl::Error(ecl::MemoryError);
00101               case ( ENOMEM )      : return ecl::Error(ecl::MemoryError);
00102               case ( EPROTO )      : return ecl::Error(ecl::InvalidArgError);
00103               case ( EPERM )       : return ecl::Error(ecl::PermissionsError);
00104               default              : return ecl::Error(UnknownError);
00105   }
00106 }
00112 inline ecl::Error receive_error() {
00113 
00114   switch( errno ) {
00115               case ( EAGAIN || EWOULDBLOCK ) : return ecl::Error(ecl::InterruptedError);
00116               case ( EBADF       ) : return ecl::Error(ecl::InvalidObjectError);
00117               case ( ECONNREFUSED) : return ecl::Error(ecl::ConnectionError);
00118               case ( EFAULT      ) : return ecl::Error(ecl::SystemFailureError);
00119               case ( EINTR       ) : return ecl::Error(ecl::InterruptedError);
00120               case ( EINVAL      ) : return ecl::Error(ecl::InvalidArgError);
00121               case ( ENOMEM      ) : return ecl::Error(ecl::MemoryError);
00122               case ( ENOTCONN    ) : return ecl::Error(ecl::ConnectionError);
00123               case ( ENOTSOCK    ) : return ecl::Error(ecl::InvalidObjectError);
00124               default              : return ecl::Error(UnknownError);
00125   }
00126 }
00132 inline ecl::Error ioctl_error() {
00133 
00134   switch( errno ) {
00135           case ( EBADF       ) : return ecl::Error(ecl::InvalidObjectError);
00136           case ( EFAULT      ) : return ecl::Error(ecl::OutOfRangeError);
00137           case ( EINVAL      ) : return ecl::Error(ecl::InvalidArgError);
00138           case ( ENOTTY      ) : return ecl::Error(ecl::InvalidObjectError);
00139           default              : return ecl::Error(UnknownError);
00140 }
00141 }
00142 
00148 inline ecl::Error send_error() {
00149 
00150   switch( errno ) {
00151           case ( EAGAIN || EWOULDBLOCK ) : return ecl::Error(ecl::BlockingError);
00152           case ( EWOULDBLOCK ) : return ecl::Error(ecl::BlockingError);
00153           case ( EACCES      ) : return ecl::Error(ecl::PermissionsError);
00154           case ( EBADF       ) : return ecl::Error(ecl::InvalidObjectError);
00155           case ( ECONNRESET  ) : return ecl::Error(ecl::InterruptedError);
00156           case ( EFAULT      ) : return ecl::Error(ecl::SystemFailureError);
00157           case ( EINTR       ) : return ecl::Error(ecl::InterruptedError);
00158           case ( EINVAL      ) : return ecl::Error(ecl::InvalidArgError);
00159           case ( EISCONN     ) : return ecl::Error(ecl::ConnectionError);
00160           case ( EMSGSIZE    ) : return ecl::Error(ecl::WriteError);
00161           case ( ENOBUFS     ) : return ecl::Error(ecl::OutOfResourcesError);
00162           case ( ENOMEM      ) : return ecl::Error(ecl::MemoryError);
00163           case ( ENOTCONN    ) : return ecl::Error(ecl::ConnectionError);
00164           case ( ENOTSOCK    ) : return ecl::Error(ecl::InvalidObjectError);
00165           case ( EOPNOTSUPP  ) : return ecl::Error(ecl::NotSupportedError);
00166           case ( EPIPE       ) : return ecl::Error(ecl::InterruptedError);
00167           default              : return ecl::Error(UnknownError);
00168 }
00169 }
00170 
00176 inline ecl::Error gethostbyname_error() {
00177   switch( h_errno ) {
00178           case ( HOST_NOT_FOUND ) : return ecl::Error(ecl::ConnectionError);
00179           case ( NO_ADDRESS )  : return ecl::Error(ecl::InvalidArgError);
00180           case ( NO_RECOVERY ) : return ecl::Error(ecl::UnknownError);
00181           default              : return ecl::Error(ecl::UnknownError);
00182   }
00183 }
00189 inline ecl::Error connection_error() {
00190   switch( errno ) {
00191       case ( ( EACCES ) || ( EPERM ) ): return ecl::Error(ecl::PermissionsError);
00192       case ( EADDRINUSE )  : return ecl::Error(ecl::BusyError);
00193       case ( EAFNOSUPPORT ): return ecl::Error(ecl::NotSupportedError);
00194       case ( EAGAIN )      : return ecl::Error(ecl::OutOfResourcesError);
00195       case ( EALREADY )    : return ecl::Error(ecl::BlockingError);
00196       case ( EBADF )       : return ecl::Error(ecl::InvalidObjectError);
00197       case ( ECONNREFUSED ): return ecl::Error(ecl::ConnectionRefusedError);
00198       case ( EFAULT )      : return ecl::Error(ecl::OutOfRangeError);
00199       case ( EINPROGRESS ) : return ecl::Error(ecl::BlockingError);
00200       case ( EINTR )       : return ecl::Error(ecl::InterruptedError);
00201       case ( EISCONN )     : return ecl::Error(ecl::ConnectionError);
00202       case ( ENETUNREACH ) : return ecl::Error(ecl::ConfigurationError);
00203       case ( ENOTSOCK )    : return ecl::Error(ecl::InvalidObjectError);
00204       case ( ETIMEDOUT )   : return ecl::Error(ecl::TimeOutError);
00205               default              : return ecl::Error(ecl::UnknownError);
00206   }
00207 }
00208 
00209 } // namespace devices
00210 } // namespace ecl
00211 
00212 #endif /* ECL_IS_POSIX */
00213 #endif /* !ECL_IS_APPLE */
00214 #endif /* ECL_DEVICES_SOCKET_ERROR_HANDLER_POS_HPP_ */


ecl_devices
Author(s): Daniel Stonier
autogenerated on Wed Aug 26 2015 11:27:37