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


ecl_devices
Author(s): Daniel Stonier
autogenerated on Mon Jul 3 2017 02:22:02