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 #ifdef ECL_IS_POSIX
00015 
00016 /*****************************************************************************
00017 ** Includes
00018 *****************************************************************************/
00019 
00020 #include <errno.h>
00021 #include <ecl/errors/handlers.hpp>
00022 #include "../../../include/ecl/devices/detail/error_handler_pos.hpp"
00023 
00024 /*****************************************************************************
00025 ** Namespaces
00026 *****************************************************************************/
00027 
00028 namespace ecl {
00029 namespace devices {
00030 
00031 /*****************************************************************************
00032 ** Implementation [Exception Handlers]
00033 *****************************************************************************/
00034 
00035 ecl::Error open_error() {
00036         int error_result = errno;
00037         switch (error_result) {
00038                 case ( EINVAL ) : return ecl::Error(ecl::InvalidArgError);
00039                 case ( EACCES ) : return ecl::Error(ecl::PermissionsError);
00040                 case ( EFBIG )  : case (EOVERFLOW)  :
00041                                                   return ecl::Error(ecl::OutOfResourcesError);
00042                 case ( EINTR )  : return ecl::Error(ecl::InterruptedError);
00043                 case ( EISDIR ) : return ecl::Error(ecl::InvalidObjectError);
00044                 case ( ELOOP )  : return ecl::Error(ecl::SystemFailureError);
00045                 case ( EMFILE ) : return ecl::Error(ecl::OutOfResourcesError);
00046                 case ( ENFILE ) : return ecl::Error(ecl::OutOfResourcesError);
00047                 case ( ENAMETOOLONG ) : return ecl::Error(ecl::InvalidArgError);
00048                 case ( ENOMEM ) : return ecl::Error(ecl::MemoryError);
00049                 case ( ENOSPC ) : return ecl::Error(ecl::OutOfResourcesError);
00050                 case ( ENOTDIR ): return ecl::Error(ecl::InvalidObjectError);
00051                 case ( EROFS )  : return ecl::Error(ecl::PermissionsError);
00052                 case ( ETXTBSY ): return ecl::Error(ecl::UsageError);
00053                 default         : return ecl::Error(ecl::UnknownError);
00054         }
00055 }
00056 
00057 
00058 ecl::Error write_error() {
00059         int error_result = errno;
00060         switch (error_result) {
00061                 case ( EAGAIN ) : return ecl::Error(ecl::BlockingError);
00062                 case ( EBADF  ) : case (EINVAL)
00063                                                 : return ecl::Error(ecl::InvalidObjectError);
00064                 case ( EFAULT ) : return ecl::Error(ecl::OutOfRangeError);
00065                 case ( EFBIG  ) : return ecl::Error(ecl::MemoryError);
00066                 case ( EINTR )  : return ecl::Error(ecl::InterruptedError);
00067                 case ( EIO    ) : return ecl::Error(ecl::SystemFailureError);
00068                 case ( ENOSPC ) : return ecl::Error(ecl::OutOfResourcesError);
00069                 case ( EPIPE  ) : return ecl::Error(ecl::PermissionsError);
00070                 default         : return ecl::Error(ecl::UnknownError);
00071         }
00072 }
00073 
00074 
00075 ecl::Error read_error() {
00076         int error_result = errno;
00077         switch (error_result) {
00078                 case ( EAGAIN ) : return ecl::Error(ecl::BlockingError);
00079                 case ( EBADF  ) : case (EINVAL)
00080                                                 : return ecl::Error(ecl::PermissionsError);
00081                 case ( EFAULT ) : return ecl::Error(ecl::OutOfRangeError);
00082                 case ( EINTR )  : return ecl::Error(ecl::InterruptedError);
00083                 case ( EIO    ) : return ecl::Error(ecl::SystemFailureError);
00084                 case ( EISDIR ) : return ecl::Error(ecl::InvalidObjectError);
00085                 default         : return ecl::Error(ecl::UnknownError);
00086         }
00087 }
00088 ecl::Error sync_error() {
00089         int error_result = errno;
00090         switch (error_result) {
00091                 case ( EBADF  ) : return ecl::Error(ecl::InvalidArgError);
00092                 case ( EIO  )   : return ecl::Error(ecl::CloseError);
00093                 case ( EROFS )  : case ( EINVAL )
00094                                                 : return ecl::Error(ecl::NotSupportedError);
00095                 default         : return ecl::Error(ecl::UnknownError);
00096         }
00097 }
00098 ecl::Error close_error() {
00099         int error_result = errno;
00100         switch (error_result) {
00101                 case ( EBADF  ) : return ecl::Error(ecl::InvalidArgError);
00102                 case ( EIO  )   : return ecl::Error(ecl::SystemFailureError);
00103                 case ( EINTR )  : return ecl::Error(ecl::InterruptedError);
00104                 default         : return ecl::Error(ecl::UnknownError);
00105         }
00106 }
00107 
00108 } // namespace devices
00109 } // namespace ecl
00110 
00111 #endif  /* ECL_IS_POSIX */
00112 


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