00001 /* 00002 * $Id: NetworkExceptions.h 566 2007-12-02 08:20:52Z mindstorm2600 $ 00003 * 00004 * X-VR2 00005 * 00006 * Copyright (C) Juan V. Guerrero 2007 00007 * 00008 * Juan V. Guerrero <mindstorm2600@users.sourceforge.net> 00009 * 00010 * This program is free software, distributed under the terms of 00011 * the GNU General Public License Version 2. See the LICENSE file 00012 * at the top of the source tree. 00013 */ 00014 #ifndef __XVR2_NETWORK_EXCEPTION_H__ 00015 #define __XVR2_NETWORK_EXCEPTION_H__ 00016 #include<xvr2/CoreExceptions.h> 00017 #include<xvr2/SystemException.h> 00018 00019 namespace xvr2 { 00020 namespace Net { 00023 class NetworkException:public SystemException{ 00024 public: 00030 NetworkException(); 00033 NetworkException(OSErrorCodeT error_code); 00034 }; 00035 00036 class UnsupportedProtocol:public NetworkException { 00037 private: 00038 int _proto_id; 00039 public: 00040 UnsupportedProtocol(); 00041 UnsupportedProtocol(OSErrorCodeT error_code); 00042 UnsupportedProtocol(OSErrorCodeT error_code, int _protocol_id); 00043 int protocolID(); 00044 String protocolName(); 00045 00046 }; 00047 00049 class ConnectionTimeout:public NetworkException{ 00050 public: 00056 ConnectionTimeout(); 00057 ConnectionTimeout(OSErrorCodeT error_code); 00058 }; 00059 00062 class ConnectionRefused:public NetworkException{ 00063 public: 00069 ConnectionRefused(); 00070 ConnectionRefused(OSErrorCodeT error_code); 00071 }; 00072 00075 class NetworkUnreachable:public NetworkException{ 00076 public: 00082 NetworkUnreachable(); 00083 NetworkUnreachable(OSErrorCodeT error_code); 00084 }; 00085 00088 class SocketAlreadyBounded:public NetworkException{ 00089 public: 00095 SocketAlreadyBounded(); 00096 SocketAlreadyBounded(OSErrorCodeT error_code); 00097 }; 00098 00100 class SocketAlreadyUsed:public NetworkException{ 00101 public: 00107 SocketAlreadyUsed(); 00108 SocketAlreadyUsed(OSErrorCodeT error_code); 00109 }; 00110 00111 class CertificateLoadLocations:public NetworkException{ 00112 public: 00114 CertificateLoadLocations(); 00115 }; 00116 class CertificateLookupPending:public NetworkException{ 00117 public: 00119 CertificateLookupPending(); 00120 }; 00122 class ConnectionResetByPeer:public NetworkException{ 00123 public: 00127 ConnectionResetByPeer(); 00128 }; 00131 class HostNotFound:public NetworkException{ 00132 public: 00136 HostNotFound(); 00137 }; 00138 class KeyfileUnreadable:public NetworkException{ 00139 public: 00141 KeyfileUnreadable(); 00142 }; 00143 class NoDataForReading:public NetworkException{ 00144 public: 00146 NoDataForReading(); 00147 }; 00150 class NoIPForYou:public NetworkException{ 00151 public: 00155 NoIPForYou(); 00156 }; 00157 class NotConnected:public NetworkException{ 00158 public: 00160 NotConnected(); 00161 }; 00162 class NoValidCipherInList:public NetworkException{ 00163 public: 00165 NoValidCipherInList(); 00166 }; 00168 class NSFatal:public NetworkException{ 00169 public: 00173 NSFatal(); 00174 }; 00176 class NSTryAgain:public NetworkException{ 00177 public: 00181 NSTryAgain(); 00182 }; 00183 00184 class SSLConnectFailed:public NetworkException{ 00185 public: 00187 SSLConnectFailed(); 00188 }; 00189 00190 00191 class SSLConnectionClosed:public NetworkException{ 00192 public: 00194 SSLConnectionClosed(); 00195 }; 00196 00197 00198 class SSLConnectionIsBusy:public NetworkException{ 00199 public: 00201 SSLConnectionIsBusy(); 00202 }; 00203 00205 class SSLContextCreation:public NetworkException{ 00206 public: 00208 SSLContextCreation(); 00209 }; 00210 00211 class SSLGeneric:public NetworkException{ 00212 public: 00214 SSLGeneric(); 00215 }; 00216 00217 class UDPReceiveTimeout:public NetworkException{ 00218 public: 00220 UDPReceiveTimeout(); 00221 }; 00222 00223 class SSLInvalidCertificate:public SSLGeneric{ 00224 public: 00226 SSLInvalidCertificate(); 00227 }; 00228 00229 class SSLInvalidPeerCertificate:public SSLGeneric{ 00230 public: 00232 SSLInvalidPeerCertificate(); 00233 }; 00234 00235 class SSLSocketAddIOFailure:public SSLGeneric { 00236 public: 00238 SSLSocketAddIOFailure(); 00239 }; 00240 00241 class Crypto:public NetworkException { 00242 public: 00244 Crypto(); 00245 }; 00246 00247 class X509Exception:public Crypto{ 00248 public: 00250 X509Exception(); 00251 }; 00252 00253 class CertificateIssuerNotFoundLocally:public X509Exception{ 00254 public: 00256 CertificateIssuerNotFoundLocally(); 00257 }; 00258 00259 class X509IssuerCertificateNotFound:public X509Exception{ 00260 public: 00262 X509IssuerCertificateNotFound(); 00263 }; 00264 00265 class X509UnableToDecryptCertificate:public X509Exception{ 00266 public: 00268 X509UnableToDecryptCertificate(); 00269 }; 00270 00271 }; 00272 }; 00273 #endif 00274