00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048 #if !defined(_CALL_H____OF_AXIS_INCLUDED_)
00049 #define _CALL_H____OF_AXIS_INCLUDED_
00050
00051 #include "../GDefine.hpp"
00052 #include "../TypeMapping.hpp"
00053 #include "../AxisUserAPI.hpp"
00054 #include "../WSDDDefines.hpp"
00055 #include "../IHeaderBlock.hpp"
00056
00057 AXIS_CPP_NAMESPACE_START
00058
00059 class ClientAxisEngine;
00060 class SOAPTransport;
00061 class MessageData;
00062 class SoapDeSerializer;
00063 class SoapSerializer;
00064
00065 class STORAGE_CLASS_INFO CallBase
00066 {
00067 public:
00068 virtual void AXISCALL setSOAPVersion(SOAP_VERSION version)=0;
00069 virtual int AXISCALL setTransportProperty(AXIS_TRANSPORT_INFORMATION_TYPE
00070 type, const char* value)=0;
00071 virtual int AXISCALL setHandlerProperty(AxisChar* name,
00072 void* value, int len)=0;
00073 virtual int AXISCALL setProtocol(AXIS_PROTOCOL_TYPE protocol)=0;
00074 virtual int AXISCALL initialize(PROVIDERTYPE nStyle, int secure)=0;
00075 virtual int AXISCALL invoke()=0;
00076 virtual int AXISCALL unInitialize()=0;
00077
00078
00079 virtual void AXISCALL setOperation(const char* pchOperation,
00080 const char* pchNamespace)=0;
00081 virtual int AXISCALL setEndpointURI(const char* pchEndpointURI)=0;
00082
00083
00084 virtual void AXISCALL addCmplxParameter(void* pObject, void* pSZFunct,
00085 void* pDelFunct, const AxisChar* pName, const AxisChar* pNamespace)=0;
00086
00087 virtual void AXISCALL addCmplxArrayParameter(Axis_Array* pArray,
00088 void* pSZFunct, void* pDelFunct, void* pSizeFunct,
00089 const AxisChar* pName, const AxisChar* pNamespace)=0;
00090
00091 virtual void AXISCALL addBasicArrayParameter(Axis_Array* pArray,
00092 XSDTYPE nType, const char* pName)=0;
00093
00094 virtual void AXISCALL addParameter(void* pValue,const char* pName,
00095 XSDTYPE nType)=0;
00096
00097
00098
00099
00100 virtual int AXISCALL getElementAsInt(const AxisChar* pName,
00101 const AxisChar* pNamespace)=0;
00102 virtual xsd__boolean AXISCALL getElementAsBoolean(const AxisChar* pName,
00103 const AxisChar* pNamespace)=0;
00104 virtual unsigned int AXISCALL getElementAsUnsignedInt(const AxisChar*
00105 pName, const AxisChar* pNamespace)=0;
00106 virtual short AXISCALL getElementAsShort(const AxisChar* pName,
00107 const AxisChar* pNamespace)=0;
00108 virtual unsigned short AXISCALL getElementAsUnsignedShort(const AxisChar*
00109 pName, const AxisChar* pNamespace)=0;
00110 virtual char AXISCALL getElementAsByte(const AxisChar* pName,
00111 const AxisChar* pNamespace)=0;
00112 virtual unsigned char AXISCALL getElementAsUnsignedByte(const AxisChar*
00113 pName, const AxisChar* pNamespace)=0;
00114 #ifdef WIN32
00115 virtual __int64 AXISCALL getElementAsLong(const AxisChar* pName,
00116 const AxisChar* pNamespace)=0;
00117 #else
00118 virtual long long AXISCALL getElementAsLong(const AxisChar* pName,
00119 const AxisChar* pNamespace)=0;
00120 #endif
00121 virtual long AXISCALL getElementAsInteger(const AxisChar* pName,
00122 const AxisChar* pNamespace)=0;
00123 virtual unsigned long AXISCALL getElementAsUnsignedLong(const AxisChar*
00124 pName, const AxisChar* pNamespace)=0;
00125 virtual float AXISCALL getElementAsFloat(const AxisChar* pName,
00126 const AxisChar* pNamespace)=0;
00127 virtual double AXISCALL getElementAsDouble(const AxisChar* pName,
00128 const AxisChar* pNamespace)=0;
00129 virtual double AXISCALL getElementAsDecimal(const AxisChar* pName,
00130 const AxisChar* pNamespace)=0;
00131 virtual AxisChar* AXISCALL getElementAsString(const AxisChar* pName,
00132 const AxisChar* pNamespace)=0;
00133 virtual AxisChar* AXISCALL getElementAsAnyURI(const AxisChar* pName,
00134 const AxisChar* pNamespace)=0;
00135 virtual AxisChar* AXISCALL getElementAsQName(const AxisChar* pName,
00136 const AxisChar* pNamespace)=0;
00137 virtual xsd__hexBinary AXISCALL getElementAsHexBinary(const AxisChar*
00138 pName, const AxisChar* pNamespace)=0;
00139 virtual xsd__base64Binary AXISCALL getElementAsBase64Binary(const
00140 AxisChar* pName, const AxisChar* pNamespace)=0;
00141 virtual struct tm AXISCALL getElementAsDateTime(const AxisChar* pName,
00142 const AxisChar* pNamespace)=0;
00143 virtual struct tm AXISCALL getElementAsDate(const AxisChar* pName,
00144 const AxisChar* pNamespace)=0;
00145 virtual struct tm AXISCALL getElementAsTime(const AxisChar* pName,
00146 const AxisChar* pNamespace)=0;
00147 virtual long AXISCALL getElementAsDuration(const AxisChar* pName,
00148 const AxisChar* pNamespace)=0;
00149
00150
00151
00152
00153 virtual int AXISCALL getAttributeAsInt(const AxisChar* pName,
00154 const AxisChar* pNamespace)=0;
00155 virtual xsd__boolean AXISCALL getAttributeAsBoolean(const AxisChar* pName,
00156 const AxisChar* pNamespace)=0;
00157 virtual unsigned int AXISCALL getAttributeAsUnsignedInt(const AxisChar*
00158 pName, const AxisChar* pNamespace)=0;
00159 virtual short AXISCALL getAttributeAsShort(const AxisChar* pName,
00160 const AxisChar* pNamespace)=0;
00161 virtual unsigned short AXISCALL getAttributeAsUnsignedShort(const
00162 AxisChar* pName, const AxisChar* pNamespace)=0;
00163 virtual char AXISCALL getAttributeAsByte(const AxisChar* pName,
00164 const AxisChar* pNamespace)=0;
00165 virtual unsigned char AXISCALL getAttributeAsUnsignedByte(const AxisChar*
00166 pName, const AxisChar* pNamespace)=0;
00167 virtual long AXISCALL getAttributeAsLong(const AxisChar* pName,
00168 const AxisChar* pNamespace)=0;
00169 virtual long AXISCALL getAttributeAsInteger(const AxisChar* pName,
00170 const AxisChar* pNamespace)=0;
00171 virtual unsigned long AXISCALL getAttributeAsUnsignedLong(const AxisChar*
00172 pName, const AxisChar* pNamespace)=0;
00173 virtual float AXISCALL getAttributeAsFloat(const AxisChar* pName,
00174 const AxisChar* pNamespace)=0;
00175 virtual double AXISCALL getAttributeAsDouble(const AxisChar* pName,
00176 const AxisChar* pNamespace)=0;
00177 virtual double AXISCALL getAttributeAsDecimal(const AxisChar* pName,
00178 const AxisChar* pNamespace)=0;
00179 virtual AxisChar* AXISCALL getAttributeAsString(const AxisChar* pName,
00180 const AxisChar* pNamespace)=0;
00181 virtual AxisChar* AXISCALL getAttributeAsAnyURI(const AxisChar* pName,
00182 const AxisChar* pNamespace)=0;
00183 virtual AxisChar* AXISCALL getAttributeAsQName(const AxisChar* pName,
00184 const AxisChar* pNamespace)=0;
00185 virtual xsd__hexBinary AXISCALL getAttributeAsHexBinary(const AxisChar*
00186 pName, const AxisChar* pNamespace)=0;
00187 virtual xsd__base64Binary AXISCALL getAttributeAsBase64Binary(const
00188 AxisChar* pName, const AxisChar* pNamespace)=0;
00189 virtual struct tm AXISCALL getAttributeAsDateTime(const AxisChar* pName,
00190 const AxisChar* pNamespace)=0;
00191 virtual struct tm AXISCALL getAttributeAsDate(const AxisChar* pName,
00192 const AxisChar* pNamespace)=0;
00193 virtual struct tm AXISCALL getAttributeAsTime(const AxisChar* pName,
00194 const AxisChar* pNamespace)=0;
00195 virtual long AXISCALL getAttributeAsDuration(const AxisChar* pName,
00196 const AxisChar* pNamespace)=0;
00197
00198
00199 virtual void* AXISCALL getCmplxObject(void* pDZFunct, void* pCreFunct,
00200 void* pDelFunct, const AxisChar* pName, const AxisChar* pNamespace)=0;
00201
00202 virtual Axis_Array AXISCALL getCmplxArray(void* pDZFunct, void* pCreFunct,
00203 void* pDelFunct, void* pSizeFunct, const AxisChar* pName,
00204 const AxisChar* pNamespace)=0;
00205
00206 virtual Axis_Array AXISCALL getBasicArray(XSDTYPE nType,
00207 const AxisChar* pName, const AxisChar* pNamespace)=0;
00208
00209 virtual int AXISCALL checkMessage(const AxisChar* pName,
00210 const AxisChar* pNamespace)=0;
00211
00212 virtual void* AXISCALL checkFault(const AxisChar* pName,
00213 const AxisChar* pNamespace)=0;
00214
00215
00216 virtual int AXISCALL getStatus()=0;
00217
00218 virtual AnyType* AXISCALL getAnyObject()=0;
00219 virtual int AXISCALL addAnyObject(AnyType* pAnyObject)=0;
00220 virtual const AxisChar* AXISCALL getNamespacePrefix
00221 (const AxisChar* pNamespace)=0;
00222
00223 virtual IHeaderBlock* AXISCALL createHeaderBlock(AxisChar *pachLocalName,
00224 AxisChar *pachUri)=0;
00225
00226 static bool bInitialized;
00227 };
00228
00229
00230 class STORAGE_CLASS_INFO Call : public CallBase
00231 {
00232 public:
00233 Call();
00234 virtual ~Call();
00235 void AXISCALL setSOAPVersion(SOAP_VERSION version);
00236 int AXISCALL setTransportProperty(AXIS_TRANSPORT_INFORMATION_TYPE type,
00237 const char* value);
00238 int AXISCALL setHandlerProperty(AxisChar* name, void* value, int len);
00239 int AXISCALL setProtocol(AXIS_PROTOCOL_TYPE protocol);
00240 AXIS_PROTOCOL_TYPE AXISCALL getProtocol();
00241 int AXISCALL unInitialize();
00242 int AXISCALL initialize(PROVIDERTYPE nStyle, int secure);
00243 int AXISCALL invoke();
00244
00245
00246 void AXISCALL addCmplxParameter(void* pObject, void* pSZFunct,
00247 void* pDelFunct, const AxisChar* pName, const AxisChar* pNamespace);
00248
00249 void AXISCALL addCmplxArrayParameter(Axis_Array* pArray, void* pSZFunct,
00250 void* pDelFunct, void* pSizeFunct, const AxisChar* pName,
00251 const AxisChar* pNamespace);
00252
00253 void AXISCALL addBasicArrayParameter(Axis_Array* pArray, XSDTYPE nType,
00254 const AxisChar* pName);
00255
00256 void AXISCALL addParameter(void* pValue,const char* pchName,
00257 XSDTYPE nType);
00258
00259
00260 void AXISCALL setOperation(const char* pchOperation,
00261 const char* pchNamespace);
00262 int AXISCALL setEndpointURI(const char* pchEndpointURI);
00263 public:
00264 IHeaderBlock* AXISCALL createHeaderBlock(AxisChar *pachLocalName,
00265 AxisChar *pachUri);
00266 IHeaderBlock* createHeaderBlock();
00267
00268
00269
00270 int AXISCALL getElementAsInt(const AxisChar* pName,
00271 const AxisChar* pNamespace);
00272 int AXISCALL getFaultDetail(char** ppcDetail);
00273 xsd__boolean AXISCALL getElementAsBoolean(const AxisChar* pName,
00274 const AxisChar* pNamespace);
00275 unsigned int AXISCALL getElementAsUnsignedInt(const AxisChar* pName,
00276 const AxisChar* pNamespace);
00277 short AXISCALL getElementAsShort(const AxisChar* pName,
00278 const AxisChar* pNamespace);
00279 unsigned short AXISCALL getElementAsUnsignedShort(const AxisChar* pName,
00280 const AxisChar* pNamespace);
00281 char AXISCALL getElementAsByte(const AxisChar* pName,
00282 const AxisChar* pNamespace);
00283 unsigned char AXISCALL getElementAsUnsignedByte(const AxisChar* pName,
00284 const AxisChar* pNamespace);
00285 #ifdef WIN32
00286 __int64 AXISCALL getElementAsLong(const AxisChar* pName,
00287 const AxisChar* pNamespace);
00288 #else
00289 long long AXISCALL getElementAsLong(const AxisChar* pName,
00290 const AxisChar* pNamespace);
00291 #endif
00292 long AXISCALL getElementAsInteger(const AxisChar* pName,
00293 const AxisChar* pNamespace);
00294 unsigned long AXISCALL getElementAsUnsignedLong(const AxisChar* pName,
00295 const AxisChar* pNamespace);
00296 float AXISCALL getElementAsFloat(const AxisChar* pName,
00297 const AxisChar* pNamespace);
00298 double AXISCALL getElementAsDouble(const AxisChar* pName,
00299 const AxisChar* pNamespace);
00300 double AXISCALL getElementAsDecimal(const AxisChar* pName,
00301 const AxisChar* pNamespace);
00302 AxisChar* AXISCALL getElementAsString(const AxisChar* pName,
00303 const AxisChar* pNamespace);
00304 AxisChar* AXISCALL getElementAsAnyURI(const AxisChar* pName,
00305 const AxisChar* pNamespace);
00306 AxisChar* AXISCALL getElementAsQName(const AxisChar* pName,
00307 const AxisChar* pNamespace);
00308 xsd__hexBinary AXISCALL getElementAsHexBinary(const AxisChar* pName,
00309 const AxisChar* pNamespace);
00310 xsd__base64Binary AXISCALL getElementAsBase64Binary(const AxisChar* pName,
00311 const AxisChar* pNamespace);
00312 struct tm AXISCALL getElementAsDateTime(const AxisChar* pName,
00313 const AxisChar* pNamespace);
00314 struct tm AXISCALL getElementAsDate(const AxisChar* pName,
00315 const AxisChar* pNamespace);
00316 struct tm AXISCALL getElementAsTime(const AxisChar* pName,
00317 const AxisChar* pNamespace);
00318 long AXISCALL getElementAsDuration(const AxisChar* pName,
00319 const AxisChar* pNamespace);
00320
00321
00322
00323
00324 int AXISCALL getAttributeAsInt(const AxisChar* pName,
00325 const AxisChar* pNamespace);
00326 xsd__boolean AXISCALL getAttributeAsBoolean(const AxisChar* pName,
00327 const AxisChar* pNamespace);
00328 unsigned int AXISCALL getAttributeAsUnsignedInt(const AxisChar* pName,
00329 const AxisChar* pNamespace);
00330 short AXISCALL getAttributeAsShort(const AxisChar* pName,
00331 const AxisChar* pNamespace);
00332 unsigned short AXISCALL getAttributeAsUnsignedShort(const AxisChar* pName,
00333 const AxisChar* pNamespace);
00334 char AXISCALL getAttributeAsByte(const AxisChar* pName,
00335 const AxisChar* pNamespace);
00336 unsigned char AXISCALL getAttributeAsUnsignedByte(const AxisChar* pName,
00337 const AxisChar* pNamespace);
00338 long AXISCALL getAttributeAsLong(const AxisChar* pName,
00339 const AxisChar* pNamespace);
00340 long AXISCALL getAttributeAsInteger(const AxisChar* pName,
00341 const AxisChar* pNamespace);
00342 unsigned long AXISCALL getAttributeAsUnsignedLong(const AxisChar* pName,
00343 const AxisChar* pNamespace);
00344 float AXISCALL getAttributeAsFloat(const AxisChar* pName,
00345 const AxisChar* pNamespace);
00346 double AXISCALL getAttributeAsDouble(const AxisChar* pName,
00347 const AxisChar* pNamespace);
00348 double AXISCALL getAttributeAsDecimal(const AxisChar* pName,
00349 const AxisChar* pNamespace);
00350 AxisChar* AXISCALL getAttributeAsString(const AxisChar* pName,
00351 const AxisChar* pNamespace);
00352 AxisChar* AXISCALL getAttributeAsAnyURI(const AxisChar* pName,
00353 const AxisChar* pNamespace);
00354 AxisChar* AXISCALL getAttributeAsQName(const AxisChar* pName,
00355 const AxisChar* pNamespace);
00356 xsd__hexBinary AXISCALL getAttributeAsHexBinary(const AxisChar* pName,
00357 const AxisChar* pNamespace);
00358 xsd__base64Binary AXISCALL getAttributeAsBase64Binary(const AxisChar*
00359 pName, const AxisChar* pNamespace);
00360 struct tm AXISCALL getAttributeAsDateTime(const AxisChar* pName,
00361 const AxisChar* pNamespace);
00362 struct tm AXISCALL getAttributeAsDate(const AxisChar* pName,
00363 const AxisChar* pNamespace);
00364 struct tm AXISCALL getAttributeAsTime(const AxisChar* pName,
00365 const AxisChar* pNamespace);
00366 long AXISCALL getAttributeAsDuration(const AxisChar* pName,
00367 const AxisChar* pNamespace);
00368
00369
00370 void* AXISCALL getCmplxObject(void* pDZFunct, void* pCreFunct,
00371 void* pDelFunct, const AxisChar* pName, const AxisChar* pNamespace);
00372
00373 Axis_Array AXISCALL getCmplxArray(void* pDZFunct, void* pCreFunct,
00374 void* pDelFunct, void* pSizeFunct, const AxisChar* pName,
00375 const AxisChar* pNamespace);
00376
00377 Axis_Array AXISCALL getBasicArray(XSDTYPE nType, const AxisChar* pName,
00378 const AxisChar* pNamespace);
00379
00380 int AXISCALL checkMessage(const AxisChar* pName,
00381 const AxisChar* pNamespace);
00382
00383 void* AXISCALL checkFault(const AxisChar* pName,
00384 const AxisChar* pNamespace);
00385
00386 int AXISCALL getStatus();
00387
00388 SOAPTransport* getTransport() { return m_pTransport; }
00389 SoapSerializer* getSOAPSerializer() { return (SoapSerializer*)m_pIWSSZ; }
00390
00397 void setProxy(const char* pcProxyHost, unsigned int uiProxyPort);
00398
00399 AnyType* AXISCALL getAnyObject();
00400 int AXISCALL addAnyObject(AnyType* pAnyObject);
00401 const AxisChar* AXISCALL getNamespacePrefix(const AxisChar* pNamespace);
00402
00403 private:
00404 int openConnection(int secure);
00405 void closeConnection();
00406 int makeArray();
00407
00408 private:
00409 ClientAxisEngine* m_pAxisEngine;
00410
00411 #ifdef WIN32
00412 #pragma warning (disable : 4251)
00413 #endif
00414 list<void*> m_handlerProperties;
00415
00416 #ifdef WIN32
00417 #pragma warning (default : 4251)
00418 #endif
00419
00420
00421
00422
00423
00424
00425 SoapSerializer* m_pIWSSZ;
00426 SoapDeSerializer* m_pIWSDZ;
00427 char* m_pcEndPointUri;
00428 AXIS_PROTOCOL_TYPE m_nTransportType;
00429
00430
00431
00432 SOAPTransport* m_pTransport;
00433
00434
00435 int m_nStatus;
00439 string m_strProxyHost;
00443 unsigned int m_uiProxyPort;
00447 bool m_bUseProxy;
00448
00454 bool m_bModuleInitialized;
00455
00456
00457 char* m_pchSessionID;
00458
00459 };
00460 AXIS_CPP_NAMESPACE_END
00461
00462 extern "C" {
00463 STORAGE_CLASS_INFO void* getStubObject(AXIS_PROTOCOL_TYPE nProtocol,
00464 AxisChar* pchEndpointURI);
00465 STORAGE_CLASS_INFO void destroyStubObject(void* pCall);
00466 }
00467
00468 #endif