00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00017 #ifndef __DERS__ERROR_HPP__
00018 #define __DERS__ERROR_HPP__
00019
00020 #include <ders/config.hpp>
00021 #include <ders/exception.hpp>
00022
00023 namespace ders {
00024
00028 enum error {
00029 ezero= 0,
00030 e2big= 1,
00031 eacces= 2,
00032 eaddrinuse= 3,
00033 eaddrnotavail= 4,
00034 eafnosupport= 5,
00035 eagain= 6,
00036 ealready= 7,
00037 ebadf= 8,
00038 ebadmsg= 9,
00039 ebusy= 10,
00040 ecanceled= 11,
00041 echild= 12,
00042 econnaborted= 13,
00043 econnrefused= 14,
00044 econnreset= 15,
00045 edeadlk= 16,
00046 edestaddrreq= 17,
00047 edom= 18,
00048 edquot= 19,
00049 eexist= 20,
00050 efault= 21,
00051 efbig= 22,
00052 ehostunreach= 23,
00053 eidrm= 24,
00054 eilseq= 25,
00055 einprogress= 26,
00056 eintr= 27,
00057 einval= 28,
00058 eio= 29,
00059 eisconn= 30,
00060 eisdir= 31,
00061 eloop= 32,
00062 emfile= 33,
00063 emlink= 34,
00064 emsgsize= 35,
00065 emultihop= 36,
00066 enametoolong= 37,
00067 enetdown= 38,
00068 enetreset= 39,
00069 enetunreach= 40,
00070 enfile= 41,
00071 enobufs= 42,
00072 enodata= 43,
00073 enodev= 44,
00074 enoent= 45,
00075 enoexec= 46,
00076 enolck= 47,
00077 enolink= 48,
00078 enomem= 49,
00079 enomsg= 50,
00080 enoprotoopt= 51,
00081 enospc= 52,
00082 enosr= 53,
00083 enostr= 54,
00084 enosys= 55,
00085 enotconn= 56,
00086 enotdir= 57,
00087 enotempty= 58,
00088 enotsock= 59,
00089 enotsup= 60,
00090 enotty= 61,
00091 enxio= 62,
00092 eopnotsupp= 63,
00093 eoverflow= 64,
00094 eperm= 65,
00095 epipe= 66,
00096 eproto= 67,
00097 eprotonosupport=68,
00098 eprototype= 69,
00099 erange= 70,
00100 erofs= 71,
00101 espipe= 72,
00102 esrch= 73,
00103 estale= 74,
00104 etime= 75,
00105 etimedout= 76,
00106 etxtbsy= 77,
00107 eunkn= 78,
00108 ewouldblock= 79,
00109 exdev= 80
00110 };
00111
00118 sh_text error_message(mem_pool& mp, error err);
00119
00125 error convert_errno(int val);
00126
00127 shException newErrorException(mem_pool& mp, const FileLine& loc, const ch_rng&
00128 msg, error err);
00129 shException newErrorException(const FileLine& loc, const ch_rng& msg, error err,
00130 shException nest);
00131
00135 class ErrorException : public Exception {
00136 friend shException newErrorException(const FileLine& loc, const ch_rng&
00137 msg, error err, shException nest);
00138
00139 ErrorException(const ErrorException&);
00140 ErrorException& operator=(const ErrorException&);
00141
00142 protected:
00143 ErrorException(const FileLine& loc, const ch_rng& msg, error err,
00144 shException nest);
00145
00146 public:
00147 const error errorCode;
00148
00149 virtual sh_text getClassName() const;
00150 virtual sh_text toText() const;
00151
00152 virtual void destroy(mem_pool& mp2) { destroy_this(this, mp2); }
00153 };
00154
00155 }
00156
00157 #endif // __DERS__ERROR_HPP__
00158