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