00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef CONEXUSEXCEPT_OPEN_H
00020 #define CONEXUSEXCEPT_OPEN_H
00021
00022 #include <conexus/except.h>
00023
00024 namespace Conexus
00025 {
00026
00032 class open_exception: public conexus_exception
00033 {
00034 public:
00035 open_exception(int e=0): conexus_exception("Unknown exception, cannot open.",e,"open")
00036 { }
00037 open_exception(const std::string s, int e=0): conexus_exception(s,e,"open")
00038 { }
00039 }
00040 ;
00041
00042 namespace exception
00043 {
00044
00045
00046 namespace open
00047 {
00048
00055 class protocol_not_supported: public open_exception
00056 {
00057 public:
00058 protocol_not_supported(): open_exception("The protocol type or the specified protocol is not supported within this domain.", EPROTONOSUPPORT)
00059 { }
00060 }
00061 ;
00062
00068 class af_not_supported: public open_exception
00069 {
00070 public:
00071 af_not_supported(): open_exception("The implementation does not support the specified address family.", EAFNOSUPPORT)
00072 { }
00073 }
00074 ;
00075
00081 class system_file: public open_exception
00082 {
00083 public:
00084 system_file(): open_exception("The system limit on the total number of open files has been reached.", ENFILE)
00085 { }
00086 }
00087 ;
00088
00094 class process_file: public open_exception
00095 {
00096 public:
00097 process_file(): open_exception("The process already has the maximum number of files open.", EMFILE)
00098 { }
00099 }
00100 ;
00101
00107 class access: public open_exception
00108 {
00109 public:
00110 access(): open_exception("Permission to access the file or create a socket of the specified type and/or protocol is denied.", EACCES)
00111 { }
00112 }
00113 ;
00114
00121 class no_memory: public open_exception
00122 {
00123 public:
00124 no_memory(): open_exception("Insufficient memory is available. The socket cannot be created until sufficient resources are freed.", ENOBUFS)
00125 { }
00126 }
00127 ;
00128
00134 class invalid_protocol: public open_exception
00135 {
00136 public:
00137 invalid_protocol(): open_exception("Unknown protocol, or protocol family not available.", EINVAL)
00138 { }
00139 }
00140 ;
00141
00147 class exists: public open_exception
00148 {
00149 public:
00150 exists(): open_exception("File already exists and O_CREAT and O_EXCL were used.", EEXIST)
00151 { }
00152 }
00153 ;
00154
00160 class fault: public open_exception
00161 {
00162 public:
00163 fault(): open_exception("File path points outside your accessible address space.", EFAULT)
00164 { }
00165 }
00166 ;
00167
00174 class is_directory: public open_exception
00175 {
00176 public:
00177 is_directory(): open_exception("Pathname refers to a directory and the access requested involved writing (that is, O_WRONLY or O_RDWR is set).", EISDIR)
00178 { }
00179 }
00180 ;
00181
00188 class loop: public open_exception
00189 {
00190 public:
00191 loop(): open_exception("Too many symbolic links were encountered in resolving pathname, or O_NOFOLLOW was specified but pathname was a symbolic link.", ELOOP)
00192 { }
00193 }
00194 ;
00195
00201 class name_too_long: public open_exception
00202 {
00203 public:
00204 name_too_long(): open_exception("Pathname was too long.", ENAMETOOLONG)
00205 { }
00206 }
00207 ;
00208
00216 class no_device: public open_exception
00217 {
00218 public:
00219 no_device(): open_exception("pathname refers to a device special file and no corresponding device exists.", ENODEV)
00220 { }
00221 }
00222 ;
00223
00231 class no_exist: public open_exception
00232 {
00233 public:
00234 no_exist(): open_exception("O_CREAT is not set and the named file does not exist. Or, a directory component in pathname does not exist or is a dangling symbolic link.", ENOENT)
00235 { }
00236 }
00237 ;
00238
00245 class no_space: public open_exception
00246 {
00247 public:
00248 no_space(): open_exception("pathname was to be created but the device containing pathname has no room for the new file.", ENOSPC)
00249 { }
00250 }
00251 ;
00252
00260 class not_directory: public open_exception
00261 {
00262 public:
00263 not_directory(): open_exception("A component used as a directory in pathname is not, in fact, a directory, or O_DIRECTORY was specified and pathname was not a directory.", ENOTDIR)
00264 { }
00265 }
00266 ;
00267
00275 class no_io: public open_exception
00276 {
00277 public:
00278 no_io(): open_exception("O_NONBLOCK | O_WRONLY is set, the named file is a FIFO and no process has the file open for reading. Or, the file is a device special file and no corresponding device exists.", ENXIO)
00279 { }
00280 }
00281 ;
00282
00289 class file_too_large: public open_exception
00290 {
00291 public:
00292 file_too_large(): open_exception("pathname refers to a regular file, too large to be opened; see O_LARGEFILE above.", EOVERFLOW)
00293 { }
00294 }
00295 ;
00296
00304 class no_permission: public open_exception
00305 {
00306 public:
00307 no_permission(): open_exception("The O_NOATIME flag was specified, but the effective user ID of the caller did not match the owner of the file and the caller was not privileged (CAP_FOWNER).", EPERM)
00308 { }
00309 }
00310 ;
00311
00318 class read_only: public open_exception
00319 {
00320 public:
00321 read_only(): open_exception("pathname refers to a file on a read-only filesystem and write access was requested.", EROFS)
00322 { }
00323 }
00324 ;
00325
00332 class executable_busy: public open_exception
00333 {
00334 public:
00335 executable_busy(): open_exception("pathname refers to an executable image which is currently being executed and write access was requested.", ETXTBSY)
00336 { }
00337 }
00338 ;
00339
00346 class would_block: public open_exception
00347 {
00348 public:
00349 would_block(): open_exception("The O_NONBLOCK flag was specified, and an incompatible lease was held on the file.", EWOULDBLOCK)
00350 { }
00351 }
00352 ;
00353
00359 class no_device_set: public open_exception
00360 {
00361 public:
00362 no_device_set(): open_exception("open requested and device not available or not set.", -1)
00363 { }
00364 }
00365 ;
00366
00372 class no_filename: public open_exception
00373 {
00374 public:
00375 no_filename(): open_exception("open requested on file, but filename not set or file not found.", -1)
00376 { }
00377 }
00378 ;
00379
00380 }
00381
00382
00383 }
00384 }
00385
00386 #endif // CONEXUSCREATE_ERROR_H