socket_error_handler_pos.cpp
Go to the documentation of this file.
00001 
00009 /*****************************************************************************
00010 ** Cross platform
00011 *****************************************************************************/
00012 
00013 #include <ecl/config/ecl.hpp>
00014 #ifndef ECL_IS_MAC
00015 #ifdef ECL_IS_POSIX
00016 
00017 /*****************************************************************************
00018 ** Includes
00019 *****************************************************************************/
00020 
00021 #include <errno.h>
00022 #include <netdb.h> // gethostbyname
00023 #include <ecl/errors/handlers.hpp>
00024 #include "../../../include/ecl/devices/detail/socket_error_handler_pos.hpp"
00025 
00026 /*****************************************************************************
00027 ** Namespaces
00028 *****************************************************************************/
00029 
00030 namespace ecl {
00031 namespace devices {
00032 
00033 /*****************************************************************************
00034 ** Implementation [Exception Handlers]
00035 *****************************************************************************/
00036 
00037 ecl::Error socket_error(const char* loc) {
00038     switch( errno ) {
00039         case ( EACCES )     : return ecl::Error(ecl::OpenError);
00040         case ( EAFNOSUPPORT): return ecl::Error(ecl::NotSupportedError);
00041         case ( EINVAL )     : return ecl::Error(ecl::InvalidArgError);
00042         case ( EMFILE )     : return ecl::Error(ecl::OutOfRangeError);
00043         case ( ENFILE )     : return ecl::Error(ecl::OutOfResourcesError);
00044         case ( ENOBUFS )    : return ecl::Error(ecl::MemoryError);
00045         case ( ENOMEM )     : return ecl::Error(ecl::MemoryError);
00046         case ( EPROTONOSUPPORT )    : return ecl::Error(ecl::NotSupportedError);
00047                 default             : return ecl::Error(UnknownError);
00048     }
00049 }
00050 
00051 ecl::Error bind_error(const char* loc) {
00052     switch( errno ) {
00053         case ( EACCES )     : return ecl::Error(ecl::PermissionsError);
00054         case ( EADDRINUSE ) : return ecl::Error(ecl::BusyError);
00055         case ( EBADF )      : return ecl::Error(ecl::InvalidObjectError);
00056         case ( EINVAL )     : return ecl::Error(ecl::BusyError);
00057         case ( ENOTSOCK )   : return ecl::Error(ecl::InvalidObjectError);
00058         case ( EADDRNOTAVAIL ) : return ecl::Error(ecl::InvalidObjectError);
00059         case ( EFAULT )     : return ecl::Error(ecl::OutOfRangeError);
00060         case ( ELOOP )      : return ecl::Error(ecl::SystemFailureError);
00061         case ( ENAMETOOLONG )  : return ecl::Error(ecl::InvalidArgError);
00062         case ( ENOENT )     : return ecl::Error(ecl::InvalidObjectError);
00063         case ( ENOMEM )     : return ecl::Error(ecl::MemoryError);
00064         case ( ENOTDIR )    : return ecl::Error(ecl::InvalidArgError);
00065         case ( EROFS )      : return ecl::Error(ecl::PermissionsError);
00066                 default             : return ecl::Error(UnknownError);
00067     }
00068 }
00069 
00070 ecl::Error accept_error(const char* loc) {
00071     switch( errno ) {
00072                 case ( EWOULDBLOCK ) : return ecl::Error(ecl::BlockingError);
00073                 case ( EBADF )       : return ecl::Error(ecl::InvalidObjectError);
00074                 case ( ECONNABORTED ): return ecl::Error(ecl::InterruptedError);
00075                 case ( EINTR )       : return ecl::Error(ecl::InterruptedError);
00076                 case ( EINVAL )      : return ecl::Error(ecl::UsageError);
00077                 case ( EMFILE )      : return ecl::Error(ecl::OutOfResourcesError);
00078                 case ( ENFILE )      : return ecl::Error(ecl::OutOfResourcesError);
00079                 case ( ENOTSOCK )    : return ecl::Error(ecl::InvalidObjectError);
00080                 case ( EOPNOTSUPP )  : return ecl::Error(ecl::InvalidObjectError);
00081                 case ( EFAULT )      : return ecl::Error(ecl::PermissionsError);
00082                 case ( ENOBUFS )     : return ecl::Error(ecl::MemoryError);
00083                 case ( ENOMEM )      : return ecl::Error(ecl::MemoryError);
00084                 case ( EPROTO )      : return ecl::Error(ecl::InvalidArgError);
00085                 case ( EPERM )       : return ecl::Error(ecl::PermissionsError);
00086                 default              : return ecl::Error(UnknownError);
00087     }
00088 }
00089 
00090 ecl::Error receive_error(const char* loc) {
00091 
00092     switch( errno ) {
00093                 case ( EAGAIN || EWOULDBLOCK ) : return ecl::Error(ecl::InterruptedError);
00094                 case ( EBADF       ) : return ecl::Error(ecl::InvalidObjectError);
00095                 case ( ECONNREFUSED) : return ecl::Error(ecl::ConnectionError);
00096                 case ( EFAULT      ) : return ecl::Error(ecl::SystemFailureError);
00097                 case ( EINTR       ) : return ecl::Error(ecl::InterruptedError);
00098                 case ( EINVAL      ) : return ecl::Error(ecl::InvalidArgError);
00099                 case ( ENOMEM      ) : return ecl::Error(ecl::MemoryError);
00100                 case ( ENOTCONN    ) : return ecl::Error(ecl::ConnectionError);
00101                 case ( ENOTSOCK    ) : return ecl::Error(ecl::InvalidObjectError);
00102                 default              : return ecl::Error(UnknownError);
00103     }
00104 }
00105 
00106 ecl::Error send_error(const char* loc) {
00107 
00108         switch( errno ) {
00109                 case ( EAGAIN || EWOULDBLOCK ) : return ecl::Error(ecl::BlockingError);
00110                 case ( EWOULDBLOCK ) : return ecl::Error(ecl::BlockingError);
00111                 case ( EACCES      ) : return ecl::Error(ecl::PermissionsError);
00112                 case ( EBADF       ) : return ecl::Error(ecl::InvalidObjectError);
00113                 case ( ECONNRESET  ) : return ecl::Error(ecl::InterruptedError);
00114                 case ( EFAULT      ) : return ecl::Error(ecl::SystemFailureError);
00115                 case ( EINTR       ) : return ecl::Error(ecl::InterruptedError);
00116                 case ( EINVAL      ) : return ecl::Error(ecl::InvalidArgError);
00117                 case ( EISCONN     ) : return ecl::Error(ecl::ConnectionError);
00118                 case ( EMSGSIZE    ) : return ecl::Error(ecl::WriteError);
00119                 case ( ENOBUFS     ) : return ecl::Error(ecl::OutOfResourcesError);
00120                 case ( ENOMEM      ) : return ecl::Error(ecl::MemoryError);
00121                 case ( ENOTCONN    ) : return ecl::Error(ecl::ConnectionError);
00122                 case ( ENOTSOCK    ) : return ecl::Error(ecl::InvalidObjectError);
00123                 case ( EOPNOTSUPP  ) : return ecl::Error(ecl::NotSupportedError);
00124                 case ( EPIPE       ) : return ecl::Error(ecl::InterruptedError);
00125                 default              : return ecl::Error(UnknownError);
00126     }
00127 }
00128 
00129 ecl::Error ioctl_error(const char* loc) {
00130 
00131         switch( errno ) {
00132                 case ( EBADF       ) : return ecl::Error(ecl::InvalidObjectError);
00133                 case ( EFAULT      ) : return ecl::Error(ecl::OutOfRangeError);
00134                 case ( EINVAL      ) : return ecl::Error(ecl::InvalidArgError);
00135                 case ( ENOTTY      ) : return ecl::Error(ecl::InvalidObjectError);
00136                 default              : return ecl::Error(UnknownError);
00137     }
00138 }
00139 ecl::Error gethostbyname_error() {
00140         switch( h_errno ) {
00141                 case ( HOST_NOT_FOUND ) : return ecl::Error(ecl::ConnectionError);
00142                 case ( NO_ADDRESS )  : return ecl::Error(ecl::InvalidArgError);
00143                 case ( NO_RECOVERY ) : return ecl::Error(ecl::UnknownError);
00144                 default              : return ecl::Error(ecl::UnknownError);
00145         }
00146 }
00147 
00148 ecl::Error connection_error(const char* loc) {
00149     switch( errno ) {
00150         case ( ( EACCES ) || ( EPERM ) ): return ecl::Error(ecl::PermissionsError);
00151         case ( EADDRINUSE )  : return ecl::Error(ecl::BusyError);
00152         case ( EAFNOSUPPORT ): return ecl::Error(ecl::NotSupportedError);
00153         case ( EAGAIN )      : return ecl::Error(ecl::OutOfResourcesError);
00154         case ( EALREADY )    : return ecl::Error(ecl::BlockingError);
00155         case ( EBADF )       : return ecl::Error(ecl::InvalidObjectError);
00156         case ( ECONNREFUSED ): return ecl::Error(ecl::ConnectionRefusedError);
00157         case ( EFAULT )      : return ecl::Error(ecl::OutOfRangeError);
00158         case ( EINPROGRESS ) : return ecl::Error(ecl::BlockingError);
00159         case ( EINTR )       : return ecl::Error(ecl::InterruptedError);
00160         case ( EISCONN )     : return ecl::Error(ecl::ConnectionError);
00161         case ( ENETUNREACH ) : return ecl::Error(ecl::ConfigurationError);
00162         case ( ENOTSOCK )    : return ecl::Error(ecl::InvalidObjectError);
00163         case ( ETIMEDOUT )   : return ecl::Error(ecl::TimeOutError);
00164                 default              : return ecl::Error(ecl::UnknownError);
00165     }
00166 }
00167 
00168 
00169 
00170 } // namespace devices
00171 } // namespace ecl
00172 
00173 #endif  /* ECL_IS_POSIX */
00174 #endif  /* !ECL_IS_MAC */
00175 


ecl_devices
Author(s): Daniel Stonier (d.stonier@gmail.com)
autogenerated on Thu Jan 2 2014 11:12:50