Main Page | Class Hierarchy | Class List | File List | Class Members | File Members | Related Pages | Examples

Call.hpp

00001 /* 00002 * Copyright 2003-2004 The Apache Software Foundation. 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 * 00016 */ 00017 00030 /* 00031 * Revision 1.1 2004/05/24 samisa 00032 * Added accesser to transport 00033 */ 00034 00035 /* 00036 * Revision 1.2 2004/05/25 samisa 00037 * Added accesser to SOAP serializer 00038 */ 00039 00040 /* 00041 * Revision 1.3 2004/05/31 samisa 00042 * Added setProxy 00043 */ 00044 00045 /* Call.h: interface for the Call class.*/ 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)=0; 00075 virtual int AXISCALL invoke()=0; 00076 virtual int AXISCALL unInitialize()=0; 00077 00078 /* Method that set the remote method name */ 00079 virtual void AXISCALL setOperation(const char* pchOperation, 00080 const char* pchNamespace)=0; 00081 virtual int AXISCALL setEndpointURI(const char* pchEndpointURI)=0; 00082 00083 /* Method for adding complex parameters */ 00084 virtual void AXISCALL addCmplxParameter(void* pObject, void* pSZFunct, 00085 void* pDelFunct, const AxisChar* pName, const AxisChar* pNamespace)=0; 00086 /* Method for adding complex type array parameters */ 00087 virtual void AXISCALL addCmplxArrayParameter(Axis_Array* pArray, 00088 void* pSZFunct, void* pDelFunct, void* pSizeFunct, 00089 const AxisChar* pName, const AxisChar* pNamespace)=0; 00090 /* Method for adding basic type array parameters */ 00091 virtual void AXISCALL addBasicArrayParameter(Axis_Array* pArray, 00092 XSDTYPE nType, const char* pName)=0; 00093 /* Method for adding parameters of basic types */ 00094 virtual void AXISCALL addParameter(void* pValue,const char* pName, 00095 XSDTYPE nType)=0; 00096 00097 /* Methods used by stubs to get a deserialized value of an XML element 00098 * as basic types 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 virtual xsd__long AXISCALL getElementAsLong(const AxisChar* pName, 00115 const AxisChar* pNamespace)=0; 00116 virtual long AXISCALL getElementAsInteger(const AxisChar* pName, 00117 const AxisChar* pNamespace)=0; 00118 virtual unsigned long AXISCALL getElementAsUnsignedLong(const AxisChar* 00119 pName, const AxisChar* pNamespace)=0; 00120 virtual float AXISCALL getElementAsFloat(const AxisChar* pName, 00121 const AxisChar* pNamespace)=0; 00122 virtual double AXISCALL getElementAsDouble(const AxisChar* pName, 00123 const AxisChar* pNamespace)=0; 00124 virtual double AXISCALL getElementAsDecimal(const AxisChar* pName, 00125 const AxisChar* pNamespace)=0; 00126 virtual AxisChar* AXISCALL getElementAsString(const AxisChar* pName, 00127 const AxisChar* pNamespace)=0; 00128 virtual AxisChar* AXISCALL getElementAsAnyURI(const AxisChar* pName, 00129 const AxisChar* pNamespace)=0; 00130 virtual AxisChar* AXISCALL getElementAsQName(const AxisChar* pName, 00131 const AxisChar* pNamespace)=0; 00132 virtual xsd__hexBinary AXISCALL getElementAsHexBinary(const AxisChar* 00133 pName, const AxisChar* pNamespace)=0; 00134 virtual xsd__base64Binary AXISCALL getElementAsBase64Binary(const 00135 AxisChar* pName, const AxisChar* pNamespace)=0; 00136 virtual struct tm AXISCALL getElementAsDateTime(const AxisChar* pName, 00137 const AxisChar* pNamespace)=0; 00138 virtual struct tm AXISCALL getElementAsDate(const AxisChar* pName, 00139 const AxisChar* pNamespace)=0; 00140 virtual struct tm AXISCALL getElementAsTime(const AxisChar* pName, 00141 const AxisChar* pNamespace)=0; 00142 virtual long AXISCALL getElementAsDuration(const AxisChar* pName, 00143 const AxisChar* pNamespace)=0; 00144 00145 /* Methods used by stubs to get a deserialized value of XML attribute 00146 * as basic types 00147 */ 00148 virtual int AXISCALL getAttributeAsInt(const AxisChar* pName, 00149 const AxisChar* pNamespace)=0; 00150 virtual xsd__boolean AXISCALL getAttributeAsBoolean(const AxisChar* pName, 00151 const AxisChar* pNamespace)=0; 00152 virtual unsigned int AXISCALL getAttributeAsUnsignedInt(const AxisChar* 00153 pName, const AxisChar* pNamespace)=0; 00154 virtual short AXISCALL getAttributeAsShort(const AxisChar* pName, 00155 const AxisChar* pNamespace)=0; 00156 virtual unsigned short AXISCALL getAttributeAsUnsignedShort(const 00157 AxisChar* pName, const AxisChar* pNamespace)=0; 00158 virtual char AXISCALL getAttributeAsByte(const AxisChar* pName, 00159 const AxisChar* pNamespace)=0; 00160 virtual unsigned char AXISCALL getAttributeAsUnsignedByte(const AxisChar* 00161 pName, const AxisChar* pNamespace)=0; 00162 virtual long AXISCALL getAttributeAsLong(const AxisChar* pName, 00163 const AxisChar* pNamespace)=0; 00164 virtual long AXISCALL getAttributeAsInteger(const AxisChar* pName, 00165 const AxisChar* pNamespace)=0; 00166 virtual unsigned long AXISCALL getAttributeAsUnsignedLong(const AxisChar* 00167 pName, const AxisChar* pNamespace)=0; 00168 virtual float AXISCALL getAttributeAsFloat(const AxisChar* pName, 00169 const AxisChar* pNamespace)=0; 00170 virtual double AXISCALL getAttributeAsDouble(const AxisChar* pName, 00171 const AxisChar* pNamespace)=0; 00172 virtual double AXISCALL getAttributeAsDecimal(const AxisChar* pName, 00173 const AxisChar* pNamespace)=0; 00174 virtual AxisChar* AXISCALL getAttributeAsString(const AxisChar* pName, 00175 const AxisChar* pNamespace)=0; 00176 virtual AxisChar* AXISCALL getAttributeAsAnyURI(const AxisChar* pName, 00177 const AxisChar* pNamespace)=0; 00178 virtual AxisChar* AXISCALL getAttributeAsQName(const AxisChar* pName, 00179 const AxisChar* pNamespace)=0; 00180 virtual xsd__hexBinary AXISCALL getAttributeAsHexBinary(const AxisChar* 00181 pName, const AxisChar* pNamespace)=0; 00182 virtual xsd__base64Binary AXISCALL getAttributeAsBase64Binary(const 00183 AxisChar* pName, const AxisChar* pNamespace)=0; 00184 virtual struct tm AXISCALL getAttributeAsDateTime(const AxisChar* pName, 00185 const AxisChar* pNamespace)=0; 00186 virtual struct tm AXISCALL getAttributeAsDate(const AxisChar* pName, 00187 const AxisChar* pNamespace)=0; 00188 virtual struct tm AXISCALL getAttributeAsTime(const AxisChar* pName, 00189 const AxisChar* pNamespace)=0; 00190 virtual long AXISCALL getAttributeAsDuration(const AxisChar* pName, 00191 const AxisChar* pNamespace)=0; 00192 00193 /* Method used by stubs to get a deserialized value of complex types */ 00194 virtual void* AXISCALL getCmplxObject(void* pDZFunct, void* pCreFunct, 00195 void* pDelFunct, const AxisChar* pName, const AxisChar* pNamespace)=0; 00196 /* Method used by stubs to get a deserialized Array of complex types */ 00197 virtual Axis_Array AXISCALL getCmplxArray(void* pDZFunct, void* pCreFunct, 00198 void* pDelFunct, void* pSizeFunct, const AxisChar* pName, 00199 const AxisChar* pNamespace)=0; 00200 /* Method used by stubs to get a deserialized Array of basic types */ 00201 virtual Axis_Array AXISCALL getBasicArray(XSDTYPE nType, 00202 const AxisChar* pName, const AxisChar* pNamespace)=0; 00203 00204 virtual int AXISCALL checkMessage(const AxisChar* pName, 00205 const AxisChar* pNamespace)=0; 00206 00207 virtual void* AXISCALL checkFault(const AxisChar* pName, 00208 const AxisChar* pNamespace)=0; 00209 00210 /* Minimal error check */ 00211 virtual int AXISCALL getStatus()=0; 00212 00213 virtual AnyType* AXISCALL getAnyObject()=0; 00214 virtual int AXISCALL addAnyObject(AnyType* pAnyObject)=0; 00215 virtual const AxisChar* AXISCALL getNamespacePrefix 00216 (const AxisChar* pNamespace)=0; 00217 00218 virtual IHeaderBlock* AXISCALL createHeaderBlock(AxisChar *pachLocalName, 00219 AxisChar *pachUri)=0; 00220 00221 virtual IHeaderBlock* AXISCALL createHeaderBlock(AxisChar *pachLocalName, 00222 AxisChar *pachUri, AxisChar *pachPrefix)=0; 00223 00224 static bool bInitialized; 00225 }; 00226 00227 /* A separate call class object should be used by each thread */ 00228 class STORAGE_CLASS_INFO Call : public CallBase 00229 { 00230 public: 00231 Call(); 00232 virtual ~Call(); 00233 void AXISCALL setSOAPVersion(SOAP_VERSION version); 00234 int AXISCALL setTransportProperty(AXIS_TRANSPORT_INFORMATION_TYPE type, 00235 const char* value); 00236 int AXISCALL setHandlerProperty(AxisChar* name, void* value, int len); 00237 int AXISCALL setProtocol(AXIS_PROTOCOL_TYPE protocol); 00238 AXIS_PROTOCOL_TYPE AXISCALL getProtocol(); 00239 int AXISCALL unInitialize(); 00240 int AXISCALL initialize(PROVIDERTYPE nStyle); 00241 int AXISCALL invoke(); 00242 00243 /* Method for adding complex parameters */ 00244 void AXISCALL addCmplxParameter(void* pObject, void* pSZFunct, 00245 void* pDelFunct, const AxisChar* pName, const AxisChar* pNamespace); 00246 /* Method for adding complex type array parameters */ 00247 void AXISCALL addCmplxArrayParameter(Axis_Array* pArray, void* pSZFunct, 00248 void* pDelFunct, void* pSizeFunct, const AxisChar* pName, 00249 const AxisChar* pNamespace); 00250 /* Method for adding basic type array parameters */ 00251 void AXISCALL addBasicArrayParameter(Axis_Array* pArray, XSDTYPE nType, 00252 const AxisChar* pName); 00253 /* Method for adding parameters of basic types */ 00254 void AXISCALL addParameter(void* pValue,const char* pchName, 00255 XSDTYPE nType); 00256 00257 /* Method that set the remote method name */ 00258 void AXISCALL setOperation(const char* pchOperation, 00259 const char* pchNamespace); 00260 int AXISCALL setEndpointURI(const char* pchEndpointURI); 00261 public: 00262 IHeaderBlock* AXISCALL createHeaderBlock(AxisChar *pachLocalName, 00263 AxisChar *pachUri); 00264 IHeaderBlock* AXISCALL createHeaderBlock(AxisChar *pachLocalName, 00265 AxisChar *pachUri, AxisChar *pachPrefix); 00266 IHeaderBlock* createHeaderBlock(); 00267 /* Methods used by stubs to get a deserialized value of XML element 00268 * as basic types 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 xsd__long AXISCALL getElementAsLong(const AxisChar* pName, 00286 const AxisChar* pNamespace); 00287 long AXISCALL getElementAsInteger(const AxisChar* pName, 00288 const AxisChar* pNamespace); 00289 unsigned long AXISCALL getElementAsUnsignedLong(const AxisChar* pName, 00290 const AxisChar* pNamespace); 00291 float AXISCALL getElementAsFloat(const AxisChar* pName, 00292 const AxisChar* pNamespace); 00293 double AXISCALL getElementAsDouble(const AxisChar* pName, 00294 const AxisChar* pNamespace); 00295 double AXISCALL getElementAsDecimal(const AxisChar* pName, 00296 const AxisChar* pNamespace); 00297 AxisChar* AXISCALL getElementAsString(const AxisChar* pName, 00298 const AxisChar* pNamespace); 00299 AxisChar* AXISCALL getElementAsAnyURI(const AxisChar* pName, 00300 const AxisChar* pNamespace); 00301 AxisChar* AXISCALL getElementAsQName(const AxisChar* pName, 00302 const AxisChar* pNamespace); 00303 xsd__hexBinary AXISCALL getElementAsHexBinary(const AxisChar* pName, 00304 const AxisChar* pNamespace); 00305 xsd__base64Binary AXISCALL getElementAsBase64Binary(const AxisChar* pName, 00306 const AxisChar* pNamespace); 00307 struct tm AXISCALL getElementAsDateTime(const AxisChar* pName, 00308 const AxisChar* pNamespace); 00309 struct tm AXISCALL getElementAsDate(const AxisChar* pName, 00310 const AxisChar* pNamespace); 00311 struct tm AXISCALL getElementAsTime(const AxisChar* pName, 00312 const AxisChar* pNamespace); 00313 long AXISCALL getElementAsDuration(const AxisChar* pName, 00314 const AxisChar* pNamespace); 00315 00316 /* Methods used by stubs to get a deserialized value of a XML attribute 00317 * as basic types 00318 */ 00319 int AXISCALL getAttributeAsInt(const AxisChar* pName, 00320 const AxisChar* pNamespace); 00321 xsd__boolean AXISCALL getAttributeAsBoolean(const AxisChar* pName, 00322 const AxisChar* pNamespace); 00323 unsigned int AXISCALL getAttributeAsUnsignedInt(const AxisChar* pName, 00324 const AxisChar* pNamespace); 00325 short AXISCALL getAttributeAsShort(const AxisChar* pName, 00326 const AxisChar* pNamespace); 00327 unsigned short AXISCALL getAttributeAsUnsignedShort(const AxisChar* pName, 00328 const AxisChar* pNamespace); 00329 char AXISCALL getAttributeAsByte(const AxisChar* pName, 00330 const AxisChar* pNamespace); 00331 unsigned char AXISCALL getAttributeAsUnsignedByte(const AxisChar* pName, 00332 const AxisChar* pNamespace); 00333 long AXISCALL getAttributeAsLong(const AxisChar* pName, 00334 const AxisChar* pNamespace); 00335 long AXISCALL getAttributeAsInteger(const AxisChar* pName, 00336 const AxisChar* pNamespace); 00337 unsigned long AXISCALL getAttributeAsUnsignedLong(const AxisChar* pName, 00338 const AxisChar* pNamespace); 00339 float AXISCALL getAttributeAsFloat(const AxisChar* pName, 00340 const AxisChar* pNamespace); 00341 double AXISCALL getAttributeAsDouble(const AxisChar* pName, 00342 const AxisChar* pNamespace); 00343 double AXISCALL getAttributeAsDecimal(const AxisChar* pName, 00344 const AxisChar* pNamespace); 00345 AxisChar* AXISCALL getAttributeAsString(const AxisChar* pName, 00346 const AxisChar* pNamespace); 00347 AxisChar* AXISCALL getAttributeAsAnyURI(const AxisChar* pName, 00348 const AxisChar* pNamespace); 00349 AxisChar* AXISCALL getAttributeAsQName(const AxisChar* pName, 00350 const AxisChar* pNamespace); 00351 xsd__hexBinary AXISCALL getAttributeAsHexBinary(const AxisChar* pName, 00352 const AxisChar* pNamespace); 00353 xsd__base64Binary AXISCALL getAttributeAsBase64Binary(const AxisChar* 00354 pName, const AxisChar* pNamespace); 00355 struct tm AXISCALL getAttributeAsDateTime(const AxisChar* pName, 00356 const AxisChar* pNamespace); 00357 struct tm AXISCALL getAttributeAsDate(const AxisChar* pName, 00358 const AxisChar* pNamespace); 00359 struct tm AXISCALL getAttributeAsTime(const AxisChar* pName, 00360 const AxisChar* pNamespace); 00361 long AXISCALL getAttributeAsDuration(const AxisChar* pName, 00362 const AxisChar* pNamespace); 00363 00364 /* Method used by stubs to get a deserialized value of complex types */ 00365 void* AXISCALL getCmplxObject(void* pDZFunct, void* pCreFunct, 00366 void* pDelFunct, const AxisChar* pName, const AxisChar* pNamespace); 00367 /* Method used by stubs to get a deserialized Array of complex types */ 00368 Axis_Array AXISCALL getCmplxArray(void* pDZFunct, void* pCreFunct, 00369 void* pDelFunct, void* pSizeFunct, const AxisChar* pName, 00370 const AxisChar* pNamespace); 00371 /* Method used by stubs to get a deserialized Array of basic types */ 00372 Axis_Array AXISCALL getBasicArray(XSDTYPE nType, const AxisChar* pName, 00373 const AxisChar* pNamespace); 00374 00375 int AXISCALL checkMessage(const AxisChar* pName, 00376 const AxisChar* pNamespace); 00377 00378 void* AXISCALL checkFault(const AxisChar* pName, 00379 const AxisChar* pNamespace); 00380 00381 int AXISCALL getStatus(); 00382 00383 SOAPTransport* getTransport() { return m_pTransport; } 00384 SoapSerializer* getSOAPSerializer() { return (SoapSerializer*)m_pIWSSZ; } 00385 00392 void setProxy(const char* pcProxyHost, unsigned int uiProxyPort); 00393 00394 AnyType* AXISCALL getAnyObject(); 00395 int AXISCALL addAnyObject(AnyType* pAnyObject); 00396 const AxisChar* AXISCALL getNamespacePrefix(const AxisChar* pNamespace); 00397 00398 private: 00399 int openConnection(); 00400 void closeConnection(); 00401 int makeArray(); 00402 00403 private: 00404 ClientAxisEngine* m_pAxisEngine; 00405 00406 #ifdef WIN32 00407 #pragma warning (disable : 4251) 00408 #endif 00409 list<void*> m_handlerProperties; 00410 00411 #ifdef WIN32 00412 #pragma warning (default : 4251) 00413 #endif 00414 00415 /* 00416 Following are pointers to relevant objects of the ClientAxisEngine 00417 instance. So they do not belong to this object and are not created 00418 or deleted 00419 */ 00420 SoapSerializer* m_pIWSSZ; 00421 SoapDeSerializer* m_pIWSDZ; 00422 char* m_pcEndPointUri; 00423 AXIS_PROTOCOL_TYPE m_nTransportType; 00424 /* 00425 Transport object 00426 */ 00427 SOAPTransport* m_pTransport; 00428 00429 /* Minimal error check */ 00430 int m_nStatus; 00434 string m_strProxyHost; 00438 unsigned int m_uiProxyPort; 00442 bool m_bUseProxy; 00443 00449 bool m_bModuleInitialized; 00450 00454 bool m_bCallInitialized; 00455 00456 // Samisa m_pchSessionID was misssing and there was a compile error due to this 00457 char* m_pchSessionID; 00458 00459 }; 00460 AXIS_CPP_NAMESPACE_END 00461 00462 #endif

Generated on Tue Feb 8 14:34:17 2005 for AxisC++ by doxygen 1.3.8