00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00065
00066 #if !defined(AFX_CALL_H__D13E5626_0A9B_43EA_B606_364B98CEDAA8__INCLUDED_)
00067 #define AFX_CALL_H__D13E5626_0A9B_43EA_B606_364B98CEDAA8__INCLUDED_
00068
00069 #include "../common/IParam.h"
00070 #include "../engine/ClientAxisEngine.h"
00071 #include <list>
00072 using namespace std;
00073
00074 class AxisTransport;
00075
00076
00077 class Call
00078 {
00079 public:
00080 void SetSOAPVersion(SOAP_VERSION version);
00081 int SetHeader(char * key, char* value);
00082 int SetProtocol(AXIS_PROTOCOL_TYPE protocol);
00083 int UnInitialize();
00084 int Initialize();
00085 void GetResult(void** pReturn);
00086 Param* GetResult();
00087 void GetOutParam(void** pOut);
00088 Param* GetOutParam();
00089 int Invoke();
00090
00091
00092 void SetReturnType(void* pDZFunct, void* pCreFunct, void* pDelFunct, const char* pchTypeName, const char* pchUri);
00093
00094 void SetReturnType(Axis_Array* pArray, void* pDZFunct, void* pCreFunct, void* pDelFunct, void* pSizeFunct, const char* pchTypeName, const char* pchUri);
00095
00096 void SetReturnType(Axis_Array* pArray, XSDTYPE nType);
00097
00098 void SetReturnType(XSDTYPE nType);
00099
00100
00101 void AddOutParamType(void* pDZFunct, void* pCreFunct, void* pDelFunct, const char* pchTypeName, const char* pchUri);
00102
00103 void AddOutParamType(Axis_Array* pArray, void* pDZFunct, void* pCreFunct, void* pDelFunct, void* pSizeFunct, const char* pchTypeName, const char* pchUri);
00104
00105 void AddOutParamType(Axis_Array* pArray, XSDTYPE nType);
00106
00107 void AddOutParamType(XSDTYPE nType);
00108
00109
00110 void AddParameter(void* pObject, void* pSZFunct, void* pDelFunct, const char* pchName);
00111
00112 void AddParameter(Axis_Array* pArray, void* pSZFunct, void* pDelFunct, void* pSizeFunct, const char* pchTypeName, const char* pchURI, const char* pchName);
00113
00114 void AddParameter(Axis_Array* pArray, XSDTYPE nType, const char* pchName);
00115
00116
00117 void AddParameter(int nValue,const char* pchName, XSDTYPE nType);
00118 void AddParameter(unsigned int unValue,const char* pchName, XSDTYPE nType);
00119 void AddParameter(short sValue,const char* pchName, XSDTYPE nType);
00120 void AddParameter(unsigned short usValue,const char* pchName, XSDTYPE nType);
00121 void AddParameter(long lValue,const char* pchName, XSDTYPE nType);
00122 void AddParameter(unsigned long ulValue,const char* pchName, XSDTYPE nType);
00123 void AddParameter(char cValue,const char* pchName, XSDTYPE nType);
00124 void AddParameter(unsigned char ucValue,const char* pchName, XSDTYPE nType);
00125 void AddParameter(float fValue,const char* pchName, XSDTYPE nType);
00126 void AddParameter(double dValue,const char* pchName, XSDTYPE nType);
00127 void AddParameter(struct tm tValue,const char* pchName, XSDTYPE nType);
00128 void AddParameter(const AxisChar* pStrValue,const char* pchName, XSDTYPE nType);
00129 void AddParameter(const AxisString& sStrValue,const char* pchName, XSDTYPE nType);
00130
00131
00132 void SetOperation(const char* pchOperation, const char* pchNamespace);
00133 int SetEndpointURI(const char* pchEndpointURI);
00134
00135 Call();
00136 virtual ~Call();
00137 private:
00138 int OpenConnection();
00139 void CloseConnection();
00140 void InitializeObjects();
00141 int MakeArray();
00142
00143 private:
00144 ClientAxisEngine* m_pAxisEngine;
00145 Param* m_pReturnValue;
00146
00147
00148
00149
00150 MessageData* m_pMsgData;
00151 SoapSerializer* m_pIWSSZ;
00152 SoapDeSerializer* m_pIWSDZ;
00153
00154
00155
00156 XSDTYPE m_nReturnType;
00157
00158
00159
00160
00161
00162 ComplexObjectHandler m_ReturnCplxObj;
00163
00164
00165
00166
00167 Ax_soapstream m_Soap;
00168
00169
00170
00171 AxisTransport* m_pTransport;
00172
00173
00174
00175
00176 Axis_Array* m_pArray;
00177
00178
00179
00180
00181 XSDTYPE m_nArrayType;
00182
00183 class OutParamHolder
00184 {
00185 public:
00186 Param* m_pOutValue;
00187
00188
00189
00190 XSDTYPE m_nOutType;
00191
00192
00193
00194
00195
00196 ComplexObjectHandler m_OutCplxObj;
00197
00198
00199
00200
00201 Axis_Array* m_pArray;
00202
00203
00204
00205
00206 XSDTYPE m_nArrayType;
00207
00208 OutParamHolder();
00209 ~OutParamHolder();
00210 };
00211
00212 private:
00213 list<OutParamHolder*> m_OutParams;
00214 list<OutParamHolder*>::iterator m_CurItr;
00215 Call::OutParamHolder* AddOutParam();
00216 };
00217
00218 #endif // !defined(AFX_CALL_H__D13E5626_0A9B_43EA_B606_364B98CEDAA8__INCLUDED_)