00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef ERRORS_H
00020 #define ERRORS_H
00021 #include <iostream>
00022
00023
00024 enum SErrCode {
00025
00026 SOCKET_FAILED=01,
00027 WRONG_SOCKET_TYPE,
00028 ALREADY_HAVE_SOCKET,
00029 BIND_FAILED,
00030 CONNECT_FAILED,
00031 NONBLOCK_FAILED,
00032 LISTEN_FAILED,
00033 ACCEPT_FAILED,
00034 READ_FAILED,
00035 WRITE_FAILED,
00036 SOCKETHANDLING_FAILED,
00037 SELECT_FAILED,
00038 RESOLV_FAILED,
00039 SOCKET_CLOSED,
00040 SOCKET_DISCONNECTED,
00041 BIND_FIRST,
00042 NOT_RUNNING,
00043 ALREADY_RUNNING,
00044 CAST_FAILED,
00045 WSA_FAILED,
00046 NO_SSL,
00047 SSL_FAILED,
00048 SSL_CONNECT_FAILED
00049
00050 };
00051
00052
00053 struct SocketError {
00054
00055 SErrCode code;
00056 char* desc;
00057
00058 };
00059
00060 const SocketError SErrors[] = {
00061
00062 SOCKET_FAILED, "socket() failed",
00063 WRONG_SOCKET_TYPE, "wrong socket type",
00064 ALREADY_HAVE_SOCKET, "class already ha a socket",
00065 BIND_FAILED, "bind() failed",
00066 CONNECT_FAILED, "connect() failed",
00067 NONBLOCK_FAILED, "setting non-blocking mode failed",
00068 LISTEN_FAILED, "listen() failed",
00069 ACCEPT_FAILED, "accept() failed",
00070 READ_FAILED, "recv() failed",
00071 WRITE_FAILED, "send() failed",
00072 SOCKETHANDLING_FAILED,"failed to handle the sockets with SocketHandler instance",
00073 SELECT_FAILED , "failed to select()",
00074 RESOLV_FAILED, "resolving the hostname failed",
00075 SOCKET_CLOSED, "socket is closed",
00076 SOCKET_DISCONNECTED, "socket is disconnected",
00077 BIND_FIRST, "do a bind() first",
00078 NOT_RUNNING, "server not running",
00079 ALREADY_RUNNING, "server already running",
00080 CAST_FAILED, "failed to cast",
00081 WSA_FAILED, "failed to do WSAStartup()",
00082 NO_SSL, "no SSL support",
00083 SSL_FAILED, "SSL failed",
00084 SSL_CONNECT_FAILED, "failed to do connect with SSL",
00085
00086 (SErrCode) 0xffffffff, ""
00087
00088 };
00089
00090 const int errormax = sizeof(SErrors) / sizeof(SocketError) -1;
00091
00092 struct SocketException{
00093
00094 SErrCode i;
00095 SocketException(SErrCode _i){
00096
00097 i = _i;
00098
00099 }
00100
00101 std::string operator()(){
00102
00103 for(int j=0; j<errormax; j++){
00104
00105 if(SErrors[j].code == i) return SErrors[j].desc;
00106
00107 }
00108
00109 return "";
00110
00111 }
00112
00113 };
00114 #endif