00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00032 #if !defined(_CALL_H____OF_AXIS_INCLUDED_)
00033 #define _CALL_H____OF_AXIS_INCLUDED_
00034
00035 #include <axis/GDefine.hpp>
00036 #include <axis/TypeMapping.hpp>
00037 #include <axis/AxisUserAPI.hpp>
00038 #include <axis/AxisUserAPIArrays.hpp>
00039 #include <axis/WSDDDefines.hpp>
00040 #include <axis/IHeaderBlock.hpp>
00041
00042 AXIS_CPP_NAMESPACE_START
00043
00044 class ClientAxisEngine;
00045 class SOAPTransport;
00046 class MessageData;
00047 class SoapDeSerializer;
00048 class SoapSerializer;
00049 class ISoapAttachment;
00050 class ContentIdSet;
00051
00052
00053 class STORAGE_CLASS_INFO Call
00054 {
00055 public:
00056 Call();
00057 virtual ~Call();
00058 void AXISCALL setSOAPVersion(SOAP_VERSION version);
00059 int AXISCALL setTransportProperty(AXIS_TRANSPORT_INFORMATION_TYPE type,
00060 const char* value);
00061 const char* AXISCALL getTransportProperty(const char *key, bool response=true);
00062 int AXISCALL setHandlerProperty(AxisChar* name, void* value, int len);
00070 int AXISCALL setProtocol(AXIS_PROTOCOL_TYPE protocol);
00075 AXIS_PROTOCOL_TYPE AXISCALL getProtocol();
00076 int AXISCALL unInitialize();
00077 int AXISCALL initialize(PROVIDERTYPE nStyle);
00078 int AXISCALL invoke();
00079
00090 void setSOAPMethodAttribute(const AxisChar *pLocalname, const AxisChar *pPrefix, const AxisChar *pValue);
00091
00100 void setSOAPMethodAttribute(const AxisChar *pLocalname, const AxisChar *pPrefix, const AxisChar* pUri, const AxisChar *pValue);
00101
00102
00103 void AXISCALL addCmplxParameter(void* pObject, void* pSZFunct,
00104 void* pDelFunct, const AxisChar* pName, const AxisChar* pNamespace);
00105
00106 void AXISCALL addCmplxArrayParameter(Axis_Array* pArray, void* pSZFunct,
00107 void* pDelFunct, void* pSizeFunct, const AxisChar* pName,
00108 const AxisChar* pNamespace);
00109
00110 void AXISCALL addBasicArrayParameter(Axis_Array* pArray, XSDTYPE nType,
00111 const AxisChar* pName);
00112
00113 void AXISCALL addParameter(void* pValue,const char* pchName,
00114 XSDTYPE nType);
00115
00126 void AXISCALL addAttachmentParameter(ISoapAttachment* attachment, const char* pName,
00127 IAttribute **attributes=NULL, int nAttributes=0);
00128
00139 IAttribute *createAttribute(const AxisChar *pLocalname, const AxisChar *pPrefix, const AxisChar *pValue);
00140
00141
00142 void AXISCALL setOperation(const char* pchOperation,
00143 const char* pchNamespace);
00144 int AXISCALL setEndpointURI(const char* pchEndpointURI);
00145 public:
00146 IHeaderBlock* AXISCALL createHeaderBlock(AxisChar *pachLocalName,
00147 AxisChar *pachUri);
00148 IHeaderBlock* AXISCALL createHeaderBlock(AxisChar *pachLocalName,
00149 AxisChar *pachUri, AxisChar *pachPrefix);
00150 IHeaderBlock* createHeaderBlock();
00151
00152
00153
00154 xsd__int * AXISCALL getElementAsInt(const AxisChar* pName,
00155 const AxisChar* pNamespace);
00156 xsd__boolean * AXISCALL getElementAsBoolean(const AxisChar* pName,
00157 const AxisChar* pNamespace);
00158 xsd__unsignedInt * AXISCALL getElementAsUnsignedInt(const AxisChar* pName,
00159 const AxisChar* pNamespace);
00160 xsd__short * AXISCALL getElementAsShort(const AxisChar* pName,
00161 const AxisChar* pNamespace);
00162 xsd__unsignedShort * AXISCALL getElementAsUnsignedShort(const AxisChar* pName,
00163 const AxisChar* pNamespace);
00164 xsd__byte * AXISCALL getElementAsByte(const AxisChar* pName,
00165 const AxisChar* pNamespace);
00166 xsd__unsignedByte * AXISCALL getElementAsUnsignedByte(const AxisChar* pName,
00167 const AxisChar* pNamespace);
00168 xsd__long * AXISCALL getElementAsLong(const AxisChar* pName,
00169 const AxisChar* pNamespace);
00170 xsd__integer * AXISCALL getElementAsInteger(const AxisChar* pName,
00171 const AxisChar* pNamespace);
00172 xsd__unsignedLong * AXISCALL getElementAsUnsignedLong(const AxisChar* pName,
00173 const AxisChar* pNamespace);
00174 xsd__float * AXISCALL getElementAsFloat(const AxisChar* pName,
00175 const AxisChar* pNamespace);
00176 xsd__double * AXISCALL getElementAsDouble(const AxisChar* pName,
00177 const AxisChar* pNamespace);
00178 xsd__decimal * AXISCALL getElementAsDecimal(const AxisChar* pName,
00179 const AxisChar* pNamespace);
00180 xsd__string AXISCALL getElementAsString(const AxisChar* pName,
00181 const AxisChar* pNamespace);
00182 xsd__anyURI AXISCALL getElementAsAnyURI(const AxisChar* pName,
00183 const AxisChar* pNamespace);
00184 xsd__QName AXISCALL getElementAsQName(const AxisChar* pName,
00185 const AxisChar* pNamespace);
00186 xsd__hexBinary * AXISCALL getElementAsHexBinary(const AxisChar* pName,
00187 const AxisChar* pNamespace);
00188 xsd__base64Binary * AXISCALL getElementAsBase64Binary(const AxisChar* pName,
00189 const AxisChar* pNamespace);
00190 xsd__dateTime * AXISCALL getElementAsDateTime(const AxisChar* pName,
00191 const AxisChar* pNamespace);
00192 xsd__date * AXISCALL getElementAsDate(const AxisChar* pName,
00193 const AxisChar* pNamespace);
00194 xsd__time * AXISCALL getElementAsTime(const AxisChar* pName,
00195 const AxisChar* pNamespace);
00196 xsd__duration * AXISCALL getElementAsDuration(const AxisChar* pName,
00197 const AxisChar* pNamespace);
00198 xsd__gYearMonth * AXISCALL getElementAsGYearMonth(const AxisChar* pName,
00199 const AxisChar* pNamespace);
00200 xsd__gYear * AXISCALL getElementAsGYear(const AxisChar* pName,
00201 const AxisChar* pNamespace);
00202 xsd__gMonthDay * AXISCALL getElementAsGMonthDay(const AxisChar* pName,
00203 const AxisChar* pNamespace);
00204 xsd__gDay * AXISCALL getElementAsGDay(const AxisChar* pName,
00205 const AxisChar* pNamespace);
00206 xsd__gMonth * AXISCALL getElementAsGMonth(const AxisChar* pName,
00207 const AxisChar* pNamespace);
00208 xsd__nonPositiveInteger * AXISCALL getElementAsNonPositiveInteger(const AxisChar* pName,
00209 const AxisChar* pNamespace);
00210 xsd__negativeInteger * AXISCALL getElementAsNegativeInteger(const AxisChar* pName,
00211 const AxisChar* pNamespace);
00212 xsd__nonNegativeInteger * AXISCALL getElementAsNonNegativeInteger(const AxisChar* pName,
00213 const AxisChar* pNamespace);
00214 xsd__positiveInteger * AXISCALL getElementAsPositiveInteger(const AxisChar* pName,
00215 const AxisChar* pNamespace);
00216 xsd__normalizedString AXISCALL getElementAsNormalizedString(const AxisChar* pName,
00217 const AxisChar* pNamespace);
00218 xsd__token AXISCALL getElementAsToken(const AxisChar* pName,
00219 const AxisChar* pNamespace);
00220 xsd__language AXISCALL getElementAsLanguage(const AxisChar* pName,
00221 const AxisChar* pNamespace);
00222 xsd__Name AXISCALL getElementAsName(const AxisChar* pName,
00223 const AxisChar* pNamespace);
00224 xsd__NCName AXISCALL getElementAsNCName(const AxisChar* pName,
00225 const AxisChar* pNamespace);
00226 xsd__ID AXISCALL getElementAsID(const AxisChar* pName,
00227 const AxisChar* pNamespace);
00228 xsd__IDREF AXISCALL getElementAsIDREF(const AxisChar* pName,
00229 const AxisChar* pNamespace);
00230 xsd__IDREFS AXISCALL getElementAsIDREFS(const AxisChar* pName,
00231 const AxisChar* pNamespace);
00232 xsd__ENTITY AXISCALL getElementAsENTITY(const AxisChar* pName,
00233 const AxisChar* pNamespace);
00234 xsd__ENTITIES AXISCALL getElementAsENTITIES(const AxisChar* pName,
00235 const AxisChar* pNamespace);
00236 xsd__NMTOKEN AXISCALL getElementAsNMTOKEN(const AxisChar* pName,
00237 const AxisChar* pNamespace);
00238 xsd__NMTOKENS AXISCALL getElementAsNMTOKENS(const AxisChar* pName,
00239 const AxisChar* pNamespace);
00240 xsd__NOTATION AXISCALL getElementAsNOTATION(const AxisChar* pName,
00241 const AxisChar* pNamespace);
00242
00243
00244
00245
00246 xsd__int * AXISCALL getAttributeAsInt(const AxisChar* pName,
00247 const AxisChar* pNamespace);
00248 xsd__boolean * AXISCALL getAttributeAsBoolean(const AxisChar* pName,
00249 const AxisChar* pNamespace);
00250 xsd__unsignedInt * AXISCALL getAttributeAsUnsignedInt(const AxisChar* pName,
00251 const AxisChar* pNamespace);
00252 xsd__short * AXISCALL getAttributeAsShort(const AxisChar* pName,
00253 const AxisChar* pNamespace);
00254 xsd__unsignedShort * AXISCALL getAttributeAsUnsignedShort(const AxisChar* pName,
00255 const AxisChar* pNamespace);
00256 xsd__byte * AXISCALL getAttributeAsByte(const AxisChar* pName,
00257 const AxisChar* pNamespace);
00258 xsd__unsignedByte * AXISCALL getAttributeAsUnsignedByte(const AxisChar* pName,
00259 const AxisChar* pNamespace);
00260 xsd__long * AXISCALL getAttributeAsLong(const AxisChar* pName,
00261 const AxisChar* pNamespace);
00262 xsd__integer * AXISCALL getAttributeAsInteger(const AxisChar* pName,
00263 const AxisChar* pNamespace);
00264 xsd__unsignedLong * AXISCALL getAttributeAsUnsignedLong(const AxisChar* pName,
00265 const AxisChar* pNamespace);
00266 xsd__float * AXISCALL getAttributeAsFloat(const AxisChar* pName,
00267 const AxisChar* pNamespace);
00268 xsd__double * AXISCALL getAttributeAsDouble(const AxisChar* pName,
00269 const AxisChar* pNamespace);
00270 xsd__decimal * AXISCALL getAttributeAsDecimal(const AxisChar* pName,
00271 const AxisChar* pNamespace);
00272 xsd__string AXISCALL getAttributeAsString(const AxisChar* pName,
00273 const AxisChar* pNamespace);
00274 xsd__anyURI AXISCALL getAttributeAsAnyURI(const AxisChar* pName,
00275 const AxisChar* pNamespace);
00276 xsd__QName AXISCALL getAttributeAsQName(const AxisChar* pName,
00277 const AxisChar* pNamespace);
00278 xsd__hexBinary * AXISCALL getAttributeAsHexBinary(const AxisChar* pName,
00279 const AxisChar* pNamespace);
00280 xsd__base64Binary * AXISCALL getAttributeAsBase64Binary(const AxisChar*
00281 pName, const AxisChar* pNamespace);
00282 xsd__dateTime * AXISCALL getAttributeAsDateTime(const AxisChar* pName,
00283 const AxisChar* pNamespace);
00284 xsd__date * AXISCALL getAttributeAsDate(const AxisChar* pName,
00285 const AxisChar* pNamespace);
00286 xsd__time * AXISCALL getAttributeAsTime(const AxisChar* pName,
00287 const AxisChar* pNamespace);
00288 xsd__duration * AXISCALL getAttributeAsDuration(const AxisChar* pName,
00289 const AxisChar* pNamespace);
00290 xsd__gYearMonth * AXISCALL getAttributeAsGYearMonth (const AxisChar* pName,
00291 const AxisChar* pNamespace);
00292 xsd__gYear * AXISCALL getAttributeAsGYear (const AxisChar* pName,
00293 const AxisChar* pNamespace);
00294 xsd__gMonthDay * AXISCALL getAttributeAsGMonthDay (const AxisChar* pName,
00295 const AxisChar* pNamespace);
00296 xsd__gDay * AXISCALL getAttributeAsGDay (const AxisChar* pName,
00297 const AxisChar* pNamespace);
00298 xsd__gMonth * AXISCALL getAttributeAsGMonth (const AxisChar* pName,
00299 const AxisChar* pNamespace);
00300 xsd__NOTATION AXISCALL getAttributeAsNOTATION (const AxisChar* pName,
00301 const AxisChar* pNamespace);
00302 xsd__normalizedString AXISCALL getAttributeAsNormalizedString (const AxisChar* pName,
00303 const AxisChar* pNamespace);
00304 xsd__token AXISCALL getAttributeAsToken (const AxisChar* pName,
00305 const AxisChar* pNamespace);
00306 xsd__language AXISCALL getAttributeAsLanguage (const AxisChar* pName,
00307 const AxisChar* pNamespace);
00308 xsd__Name AXISCALL getAttributeAsName (const AxisChar* pName,
00309 const AxisChar* pNamespace);
00310 xsd__NCName AXISCALL getAttributeAsNCName (const AxisChar* pName,
00311 const AxisChar* pNamespace);
00312 xsd__ID AXISCALL getAttributeAsID (const AxisChar* pName,
00313 const AxisChar* pNamespace);
00314 xsd__IDREF AXISCALL getAttributeAsIDREF (const AxisChar* pName,
00315 const AxisChar* pNamespace);
00316 xsd__IDREFS AXISCALL getAttributeAsIDREFS (const AxisChar* pName,
00317 const AxisChar* pNamespace);
00318 xsd__ENTITY AXISCALL getAttributeAsENTITY (const AxisChar* pName,
00319 const AxisChar* pNamespace);
00320 xsd__ENTITIES AXISCALL getAttributeAsENTITIES (const AxisChar* pName,
00321 const AxisChar* pNamespace);
00322 xsd__NMTOKEN AXISCALL getAttributeAsNMTOKEN (const AxisChar* pName,
00323 const AxisChar* pNamespace);
00324 xsd__NMTOKENS AXISCALL getAttributeAsNMTOKENS (const AxisChar* pName,
00325 const AxisChar* pNamespace);
00326 xsd__nonPositiveInteger * AXISCALL getAttributeAsNonPositiveInteger (const AxisChar* pName,
00327 const AxisChar* pNamespace);
00328 xsd__negativeInteger * AXISCALL getAttributeAsNegativeInteger (const AxisChar* pName,
00329 const AxisChar* pNamespace);
00330 xsd__nonNegativeInteger * AXISCALL getAttributeAsNonNegativeInteger (const AxisChar* pName,
00331 const AxisChar* pNamespace);
00332 xsd__positiveInteger * AXISCALL getAttributeAsPositiveInteger (const AxisChar* pName,
00333 const AxisChar* pNamespace);
00334
00335
00336
00337 void* AXISCALL getCmplxObject(void* pDZFunct, void* pCreFunct,
00338 void* pDelFunct, const AxisChar* pName, const AxisChar* pNamespace);
00339
00340 Axis_Array* AXISCALL getCmplxArray(Axis_Array * pArray, void* pDZFunct, void* pCreFunct,
00341 void* pDelFunct, void* pSizeFunct, const AxisChar* pName,
00342 const AxisChar* pNamespace);
00343
00344 Axis_Array* AXISCALL getBasicArray(XSDTYPE nType, const AxisChar* pName,
00345 const AxisChar* pNamespace);
00346
00347 int AXISCALL checkMessage(const AxisChar* pName,
00348 const AxisChar* pNamespace);
00349
00350 void* AXISCALL checkFault(const AxisChar* pName,
00351 const AxisChar* pNamespace);
00352
00353 int AXISCALL getStatus();
00354
00355 SOAPTransport* getTransport() { return m_pTransport; }
00356 SoapSerializer* getSOAPSerializer() { return (SoapSerializer*)m_pIWSSZ; }
00357
00364 void setProxy(const char* pcProxyHost, unsigned int uiProxyPort);
00365
00366 AnyType* AXISCALL getAnyObject();
00367 int AXISCALL addAnyObject(AnyType* pAnyObject);
00368
00379 const AxisChar* AXISCALL getNamespacePrefix(const AxisChar* pNamespace);
00380
00384 const xsd__string getFaultAsXMLString();
00385
00392 void addAttachment(ISoapAttachment* objAttach);
00393
00400 ISoapAttachment* createSoapAttachment();
00401
00402 private:
00403 void closeConnection();
00404 int makeArray();
00405 void cleanup();
00406
00407 private:
00408 ClientAxisEngine* m_pAxisEngine;
00409
00410 #ifdef WIN32
00411 #pragma warning (disable : 4251)
00412 #endif
00413 list<void*> m_handlerProperties;
00414 list<ISoapAttachment*> m_attachments;
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
00452 bool m_bCallInitialized;
00453
00454
00455 char* m_pchSessionID;
00456
00457 ContentIdSet *m_pContentIdSet;
00458 };
00459 AXIS_CPP_NAMESPACE_END
00460
00461 #endif