Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members   Examples  

Call.hpp

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003 // (c) Copyright IBM Corp. 2004, 2005 All Rights Reserved
00004  *
00005  *   Licensed under the Apache License, Version 2.0 (the "License");
00006  *   you may not use this file except in compliance with the License.
00007  *   You may obtain a copy of the License at
00008  *
00009  *       http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  *   Unless required by applicable law or agreed to in writing, software
00012  *   distributed under the License is distributed on an "AS IS" BASIS,
00013  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  *   See the License for the specific language governing permissions and
00015  *   limitations under the License.
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 /* A separate call class object should be used by each thread */
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     /* Method for adding complex parameters */
00103     void AXISCALL addCmplxParameter(void* pObject, void* pSZFunct,
00104         void* pDelFunct, const AxisChar* pName, const AxisChar* pNamespace);
00105     /* Method for adding complex type array parameters */
00106     void AXISCALL addCmplxArrayParameter(Axis_Array* pArray, void* pSZFunct,
00107         void* pDelFunct, void* pSizeFunct, const AxisChar* pName,
00108         const AxisChar* pNamespace);
00109     /* Method for adding basic type array parameters */
00110     void AXISCALL addBasicArrayParameter(Axis_Array* pArray, XSDTYPE nType,
00111         const AxisChar* pName);
00112     /* Method for adding parameters of basic types */
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     /* Method that set the remote method name */
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     /* Methods used by stubs to get a deserialized value of XML element
00152      * as basic types
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     /* Methods used by stubs to get a deserialized value of a XML attribute
00244      * as basic types
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     /* Method used by stubs to get a deserialized value of complex types */
00337     void* AXISCALL getCmplxObject(void* pDZFunct, void* pCreFunct,
00338         void* pDelFunct, const AxisChar* pName, const AxisChar* pNamespace);
00339     /* Method used by stubs to get a deserialized Array of complex types */
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     /* Method used by stubs to get a deserialized Array of basic types */
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(); // clean memeory in case of exceptions and destructor etc.
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        Following are pointers to relevant objects of the ClientAxisEngine
00422        instance. So they do not belong to this object and are not created
00423        or deleted
00424      */
00425     SoapSerializer* m_pIWSSZ;
00426     SoapDeSerializer* m_pIWSDZ;
00427     char* m_pcEndPointUri;
00428     AXIS_PROTOCOL_TYPE m_nTransportType;
00429     /*
00430        Transport object
00431      */
00432     SOAPTransport* m_pTransport;
00433 
00434     /* Minimal error check */
00435     int m_nStatus;
00439     string m_strProxyHost;
00443     unsigned int m_uiProxyPort;
00447     bool m_bUseProxy;
00448 
00452     bool m_bCallInitialized;
00453   
00454     // Samisa m_pchSessionID was misssing and there was a compile error due to this
00455     char* m_pchSessionID;
00456 
00457     ContentIdSet *m_pContentIdSet;
00458 };
00459 AXIS_CPP_NAMESPACE_END
00460 
00461 #endif

Generated on Fri Mar 3 01:12:35 2006 for AxisC++ by doxygen1.2.18