Go to the documentation of this file.00001
00009
00010
00011
00012
00013 #include <ecl/config/ecl.hpp>
00014
00015
00016
00017
00018
00019 #include <errno.h>
00020 #include <ecl/errors/handlers.hpp>
00021 #include "../../../include/ecl/devices/detail/error_handler.hpp"
00022
00023
00024
00025
00026
00027 namespace ecl {
00028 namespace devices {
00029
00030
00031
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 }
00108 }