Főoldal | Névtérlista | Osztályhierarchia | Betűrendes lista | Adatszerkezetek | Könyvtárak | Fájllista | Névtértagok | Adatmezők | Globális elemek

Errors.h

Ugrás a fájl dokumentációjához.
00001 /*
00002     mySocket, Errors
00003     Copyright (C) 2006  Kornel Csernai <csko@csko.hu>
00004 
00005     This program is free software; you can redistribute it and/or modify
00006     it under the terms of the GNU General Public License as published by
00007     the Free Software Foundation; either version 2 of the License, or
00008     (at your option) any later version.
00009 
00010     This program is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013     GNU General Public License for more details.
00014 
00015     You should have received a copy of the GNU General Public License
00016     along with this program; if not, write to the Free Software
00017     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
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, // ConnectSocket
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, // at Write(), Read()
00041   BIND_FIRST, // at Listen()
00042   NOT_RUNNING, // ListenServer
00043   ALREADY_RUNNING, // ListenServer
00044   CAST_FAILED, // SocketHandler
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

SourceForge.netLogo