00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00028 #ifndef __AXISEXCEPTION_H_OF_AXIS_INCLUDED_
00029 #define __AXISEXCEPTION_H_OF_AXIS_INCLUDED_
00030
00031 #include <axis/GDefine.hpp>
00032 #include <string>
00033 #include <exception>
00034 #include <new>
00035 #include <typeinfo>
00036 #include <stdexcept>
00037
00038 AXIS_CPP_NAMESPACE_START
00039 using namespace std;
00040
00041
00042
00043
00044
00045 #define CLIENT_FAULT_OFFSET 0x0
00046 #define SERVER_FAULT_OFFSET 0x1000
00047 #define SOAP_FAULT_OFFSET 0x2000
00048 #define ENGINE_FAULT_OFFSET 0x3000
00049 #define WSDD_FAULT_OFFSET 0x4000
00050 #define TRANSPORT_FAULT_OFFSET 0x5000
00051 #define CONFIG_FAULT_OFFSET 0x6000
00052 #define AXISC_FAULT_OFFSET 0x7000
00053
00054 typedef enum
00055 {
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074 SOAP_VERSION_MISMATCH,
00075 SOAP_MUST_UNDERSTAND,
00076
00077
00078 CLIENT_SOAP_MESSAGE_INCOMPLETE,
00079 CLIENT_SOAP_SOAP_ACTION_EMTPY,
00080 CLIENT_SOAP_SOAP_CONTENT_ERROR,
00081 CLIENT_SOAP_NO_SOAP_METHOD,
00082 CLIENT_SOAP_CONTENT_NOT_SOAP,
00083 CLIENT_WSDD_SERVICE_NOT_FOUND,
00084 CLIENT_WSDD_METHOD_NOT_ALLOWED,
00085 CLIENT_WSDD_PARA_TYPE_MISMATCH,
00086 CLIENT_ENGINE_CLIENT_HANDLER_FAILED,
00087 CLIENT_TRANSPORT_EXCEPTION,
00088 CLIENT_TRANSPORT_OPEN_CONNECTION_FAILED,
00089 CLIENT_TRANSPORT_TYPE_MISMATCH,
00090 CLIENT_TRANSPORT_HAS_NO_UNSECURE_TRANSPORT_LAYER,
00091 CLIENT_TRANSPORT_HAS_NO_SECURE_TRANSPORT_LAYER,
00092 CLIENT_SSLCHANNEL_RECEPTION_EXCEPTION,
00093 CLIENT_SSLCHANNEL_SENDING_EXCEPTION,
00094 CLIENT_SSLCHANNEL_CHANNEL_INIT_ERROR,
00095 CLIENT_SSLCHANNEL_SOCKET_CREATE_ERROR,
00096 CLIENT_SSLCHANNEL_SOCKET_CONNECT_ERROR,
00097 CLIENT_SSLCHANNEL_INVALID_SOCKET_ERROR,
00098 CLIENT_SSLCHANNEL_CONTEXT_CREATE_ERROR,
00099 CLIENT_SSLCHANNEL_ERROR,
00100 CLIENT_MIME_CONTENT_ID_NOT_UNIQUE,
00101
00102
00103 SERVER_ENGINE_EXCEPTION,
00104 SERVER_ENGINE_COULD_NOT_LOAD_SRV,
00105 SERVER_ENGINE_COULD_NOT_LOAD_HDL,
00106 SERVER_ENGINE_LOADING_TRANSPORT_FAILED,
00107 SERVER_ENGINE_LOADING_PARSER_FAILED,
00108 SERVER_ENGINE_HANDLER_FAILED,
00109 SERVER_ENGINE_WEBSERVICE_FAILED,
00110 SERVER_ENGINE_HANDLER_INIT_FAILED,
00111 SERVER_ENGINE_HANDLER_CREATION_FAILED,
00112 SERVER_ENGINE_LIBRARY_LOADING_FAILED,
00113 SERVER_ENGINE_HANDLER_NOT_LOADED,
00114 SERVER_ENGINE_HANDLER_BEING_USED,
00115 SERVER_ENGINE_GET_HANDLER_FAILED,
00116 SERVER_ENGINE_WRONG_HANDLER_TYPE,
00117 SERVER_CONFIG_EXCEPTION,
00118 SERVER_CONFIG_TRANSPORT_CONF_FAILED,
00119 SERVER_CONFIG_LIBRARY_PATH_EMPTY,
00120 SERVER_WSDD_FILE_NOT_FOUND,
00121 SERVER_WSDD_EXCEPTION,
00122 SERVER_WSDD_NO_HANDLERS_CONFIGURED,
00123 SERVER_SOAP_EXCEPTION,
00124 SERVER_TRANSPORT_EXCEPTION,
00125 SERVER_TRANSPORT_RECEPTION_EXCEPTION,
00126 SERVER_TRANSPORT_SENDING_EXCEPTION,
00127 SERVER_TRANSPORT_PROCESS_EXCEPTION,
00128 SERVER_TRANSPORT_UNKNOWN_HTTP_RESPONSE,
00129 SERVER_TRANSPORT_HTTP_EXCEPTION,
00130 SERVER_TRANSPORT_UNEXPECTED_STRING,
00131 SERVER_TRANSPORT_CHANNEL_INIT_ERROR,
00132 SERVER_TRANSPORT_SOCKET_CREATE_ERROR,
00133 SERVER_TRANSPORT_SOCKET_CONNECT_ERROR,
00134 SERVER_TRANSPORT_INVALID_SOCKET,
00135 SERVER_TRANSPORT_OUTPUT_STREAMING_ERROR,
00136 SERVER_TRANSPORT_INPUT_STREAMING_ERROR,
00137 SERVER_TRANSPORT_TIMEOUT_EXCEPTION,
00138 SERVER_TRANSPORT_TIMEOUT_EXPIRED,
00139 SERVER_TRANSPORT_LOADING_SSLCHANNEL_FAILED,
00140 SERVER_TRANSPORT_LOADING_CHANNEL_FAILED,
00141 SERVER_TRANSPORT_BUFFER_EMPTY,
00142 SERVER_PARSE_BUFFER_EMPTY,
00143 SERVER_PARSE_PARSER_FAILED,
00144 SERVER_PARSE_TRANSPORT_FAILED,
00145 SERVER_TEST_EXCEPTION,
00146 SERVER_UNKNOWN_ERROR,
00147 SERVER_CLIENT_ENGINE_MISMATCH,
00148
00149
00150
00151
00152 AXISC_SERVICE_THROWN_EXCEPTION,
00153 AXISC_UNKNOWN_ELEMENT_EXCEPTION,
00154 AXISC_NODE_VALUE_MISMATCH_EXCEPTION,
00155 AXISC_READ_CONF_EXCEPTION,
00156
00157
00158
00159
00160 CONFIG_DEFAULTS_ALREADY_SET,
00161
00162
00163
00164
00165
00166 FAULT_LAST
00167 } AXISC_EXCEPTIONS;
00168
00180 class STORAGE_CLASS_INFO AxisException :public exception
00181 {
00182 public:
00184 AxisException():m_iExceptionCode(0), m_sMessage(NULL){};
00185
00197 AxisException(const int iExceptionCode, const char* pcMessage = NULL):m_iExceptionCode(iExceptionCode), m_sMessage(NULL)
00198 {
00199 setMessage(pcMessage);
00200 }
00201
00210 AxisException(const AxisException& e):m_iExceptionCode(e.m_iExceptionCode), m_sMessage(NULL)
00211 {
00212 setMessage(e.m_sMessage);
00213 };
00214
00216 virtual ~AxisException() throw()
00217 {
00218 if (m_sMessage)
00219 delete [] m_sMessage;
00220 };
00221
00225 virtual const char* what() const throw() { return m_sMessage; };
00226
00228 virtual const int getExceptionCode() const { return m_iExceptionCode; }
00229
00231 void setExceptionCode(int exceptionCode) { m_iExceptionCode = exceptionCode;}
00232
00234 const char* getMessage() const { return what(); }
00235
00240 void setMessage(const char* psMessage)
00241 {
00242 if (m_sMessage)
00243 {
00244 delete [] m_sMessage;
00245 m_sMessage = NULL;
00246 }
00247
00248 if (psMessage)
00249 {
00250 m_sMessage = new char[strlen(psMessage) + 1];
00251 strcpy(m_sMessage,psMessage);
00252 }
00253 }
00254
00256 void setExceptionFromException(const AxisException& e)
00257 {
00258 m_iExceptionCode = e.m_iExceptionCode;
00259 setMessage(e.m_sMessage);
00260 }
00261
00266 void resetException()
00267 {
00268 m_iExceptionCode = 0;
00269 setMessage((const char *)NULL);
00270 }
00271
00272 protected:
00277 int m_iExceptionCode;
00278
00284 char* m_sMessage;
00285 };
00286
00287 AXIS_CPP_NAMESPACE_END
00288
00289 #endif
00290