00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef CONEXUSEXCEPT_CLOSE_H
00020 #define CONEXUSEXCEPT_CLOSE_H
00021
00022 #include <conexus/except.h>
00023
00024 namespace Conexus {
00025
00031 class close_exception: public conexus_exception {
00032 public:
00033 close_exception(int e=0): conexus_exception("Unknown exception, socket cannot be closed.",e,"close") { }
00034 close_exception(const std::string s, int e=0): conexus_exception(s,e,"close") { }
00035 }
00036 ;
00037
00038 namespace exception {
00039
00040
00041 namespace close {
00042
00049 class bad_fd: public close_exception {
00050 public:
00051 bad_fd(): close_exception("fd isn’t a valid open file descriptor.", EBADF) { }
00052 }
00053 ;
00054
00061 class interrupted: public close_exception {
00062 public:
00063 interrupted(): close_exception("The close() call was interrupted by a signal.", EINTR) {}
00064 }
00065 ;
00066
00073 class io: public close_exception {
00074 public:
00075 io(): close_exception("An I/O exception occurred.", EIO) { }
00076 }
00077 ;
00078
00079 }
00080 }
00081 }
00082 #endif