axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From susan...@apache.org
Subject cvs commit: ws-axis/c/src/client Call.cpp
Date Tue, 10 Feb 2004 12:19:58 GMT
susantha    2004/02/10 04:19:58

  Modified:    c/include/axis/client Call.h
               c/samples/client/interoptests/cbase InteropBaseClient.c
                        InteropTestPortType.c InteropTestPortType.h
               c/samples/server/interoptests/cbase
                        InteropTestPortTypeService.c
                        InteropTestPortTypeWrapper.c
               c/src/client Call.cpp
  Log:
  C client stubs sample for InteropBase test changed to suite multi-threaded clients
  
  Revision  Changes    Path
  1.9       +16 -16    ws-axis/c/include/axis/client/Call.h
  
  Index: Call.h
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/include/axis/client/Call.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Call.h	3 Feb 2004 13:04:45 -0000	1.8
  +++ Call.h	10 Feb 2004 12:19:58 -0000	1.9
  @@ -158,24 +158,11 @@
   	int (AXISCALL* CheckMessage)(void *pObj, const AxisChar* pName, const AxisChar* pNamespace);
   } CallFunctions;
   
  -#ifndef __cplusplus
  +#ifdef __cplusplus
   
  -typedef struct { 
  -	void* unused; /* this corresponds to C++ virtual function pointer which is ignored in
C */ 
  -	CallFunctions* __vfptr;
  -} Call;
  -
  -#else
  -
  -/**
  - * CallBase class is needed to make sure that __vfptr is the second void* after virtual
pointer.
  - * If we dont have CallBase the position of __vfptr in an Call object cannot be guarenteed
to be 
  - * in the second void*.
  - */
   class CallBase
   {	
   public:
  -	void* __vfptr;
   	virtual void AXISCALL SetSOAPVersion(SOAP_VERSION version)=0;
   	virtual int AXISCALL SetTransportProperty(AXIS_TRANSPORT_INFORMATION_TYPE type, const
char* value)=0;
   	virtual int AXISCALL SetProtocol(AXIS_PROTOCOL_TYPE protocol)=0;
  @@ -563,9 +550,22 @@
   };
   #endif
   
  +typedef struct { 
  +	void* _object; /* this will be C++ Call Object */
  +	CallFunctions* _functions; /* this is the static function table */
  +} Call_C;
  +
   #ifdef __cplusplus
  -extern "C" 
  +extern "C" { 
  +#endif
  +void* GetStubObject(AXIS_PROTOCOL_TYPE nProtocol, AxisChar* pchEndpointURI); 
  +void DestroyStubObject(void* pCall); 
  +#ifdef __cplusplus
  +} 
  +#endif
  +
  +#ifndef __cplusplus
  +typedef Call_C Call; 
   #endif
  -Call* GetCallObject(AXIS_PROTOCOL_TYPE nProtocol, AxisChar* pchEndpointURI); 
   
   #endif /* !defined(AFX_CALL_H__D13E5626_0A9B_43EA_B606_364B98CEDAA8__INCLUDED_)*/
  
  
  
  1.4       +16 -15    ws-axis/c/samples/client/interoptests/cbase/InteropBaseClient.c
  
  Index: InteropBaseClient.c
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/samples/client/interoptests/cbase/InteropBaseClient.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- InteropBaseClient.c	3 Feb 2004 14:17:11 -0000	1.3
  +++ InteropBaseClient.c	10 Feb 2004 12:19:58 -0000	1.4
  @@ -19,10 +19,10 @@
   	SOAPStruct stct;
   	time_t tim;
   	struct tm* lt;
  -
  +	void* pstub = get_InteropBase_stub();
   	printf("invoking echoString...\n");
   	/*testing echoString */
  -	if (0 == strcmp(echoString("hello world"), "hello world"))
  +	if (0 == strcmp(echoString(pstub, "hello world"), "hello world"))
   		printf("successful\n");
   	else
   		printf("failed\n");
  @@ -36,13 +36,13 @@
   	}
   	/*arrstr.m_Array[1] = buffer2;*/
   	printf("invoking echoStringArray...\n");
  -	if (echoStringArray(arrstr).m_Array != NULL)
  +	if (echoStringArray(pstub, arrstr).m_Array != NULL)
   		printf("successful\n");
   	else
   		printf("failed\n");
   	/* testing echoInteger */
   	printf("invoking echoInteger...\n");
  -	if (echoInteger(56) == 56)
  +	if (echoInteger(pstub, 56) == 56)
   		printf("successful\n");
   	else
   		printf("failed\n");
  @@ -54,13 +54,13 @@
   		arrint.m_Array[x] = x;
   	}
   	printf("invoking echoIntegerArray...\n");
  -	if (echoIntegerArray(arrint).m_Array != NULL)
  +	if (echoIntegerArray(pstub, arrint).m_Array != NULL)
   		printf("successful\n");
   	else
   		printf("failed\n");
   	/* testing echoFloat */
   	printf("invoking echoFloat...\n");
  -	if (echoFloat(1.4214) > 1.42)
  +	if (echoFloat(pstub, 1.4214) > 1.42)
   		printf("successful\n");
   	else
   		printf("failed\n");
  @@ -72,7 +72,7 @@
   		arrfloat.m_Array[x] = 1.1111*x;
   	}
   	printf("invoking echoFloatArray...\n");
  -	if (echoFloatArray(arrfloat).m_Array != NULL)
  +	if (echoFloatArray(pstub, arrfloat).m_Array != NULL)
   		printf("successful\n");
   	else
   		printf("failed\n");
  @@ -81,7 +81,7 @@
   	stct.varInt = 5000;
   	stct.varString = strdup("This is string in SOAPStruct");
   	printf("invoking echoStruct...\n");
  -	if (echoStruct(&stct) != NULL)
  +	if (echoStruct(pstub, &stct) != NULL)
   		printf("successful\n");
   	else
   		printf("failed\n");
  @@ -98,7 +98,7 @@
   */	
   	/*testing echo Struct Array*/
   /*	printf("invoking echoStructArray...\n");
  -	if (echoStructArray(arrstct).m_Array != NULL)
  +	if (echoStructArray(pstub, arrstct).m_Array != NULL)
   		printf("successful\n");
   	else
   		printf("failed\n");
  @@ -106,12 +106,12 @@
   	/*testing echo void*/
   /*	
   	printf("invoking echoVoid...\n");
  -	echoVoid();
  +	echoVoid(pstub);
   	printf("successful\n");
   */	
   	/*testing echo base 64 binary*/
   /*	printf("invoking echoBase64...\n");
  -	if (0 == strcmp(ws.echoBase64("BCDF675E234242WHRTKMJDGKGUEJ898636JFJFHEJDGWTDHFJRURYGBCDHTWRSG"),
  +	if (0 == strcmp(ws.echoBase64(pstub, "BCDF675E234242WHRTKMJDGKGUEJ898636JFJFHEJDGWTDHFJRURYGBCDHTWRSG"),
   		"BCDF675E234242WHRTKMJDGKGUEJ898636JFJFHEJDGWTDHFJRURYGBCDHTWRSG"))
   		printf("successful\n");
   	else
  @@ -119,27 +119,27 @@
   	time(&tim);
   	lt = gmtime(&tim);
   	printf("invoking echoDate...\n");
  -	if (memcmp(&(echoDate(*lt)), lt, sizeof(tm)) == 0)
  +	if (memcmp(&(echoDate(pstub, *lt)), lt, sizeof(tm)) == 0)
   		printf("successful\n");
   	else
   		printf("failed\n");
   	//testing echo hex binary
   	printf("invoking echoHexBinary...\n");
  -	if (0 == strcmp(echoHexBinary("CCCFFA46552BC7D5A09BC5F23DE9E0FE7862AD45BC87D02FEE"),
  +	if (0 == strcmp(echoHexBinary(pstub, "CCCFFA46552BC7D5A09BC5F23DE9E0FE7862AD45BC87D02FEE"),
   		"CCCFFA46552BC7D5A09BC5F23DE9E0FE7862AD45BC87D02FEE"))
   		printf("successful\n");
   	else
   		printf("failed\n");
   */	/*testing echo decimal*/
   /*	printf("invoking echoDecimal...\n");
  -	if (echoDecimal(1234.567890) > 1234.56)
  +	if (echoDecimal(pstub, 1234.567890) > 1234.56)
   		printf("successful\n");
   	else
   		printf("failed\n");
   */		
   	/*testing echo boolean*/
   /*	printf("invoking echoBoolean...\n");
  -	if (echoBoolean(true_) == true_)
  +	if (echoBoolean(pstub, true_) == true_)
   		printf("successful\n");
   	else
   		printf("failed\n");
  @@ -147,4 +147,5 @@
   	getchar();
   	return 0;
   */	
  +	destroy_InteropBase_stub(pstub);
   }
  
  
  
  1.6       +164 -198  ws-axis/c/samples/client/interoptests/cbase/InteropTestPortType.c
  
  Index: InteropTestPortType.c
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/samples/client/interoptests/cbase/InteropTestPortType.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- InteropTestPortType.c	9 Feb 2004 14:57:06 -0000	1.5
  +++ InteropTestPortType.c	10 Feb 2004 12:19:58 -0000	1.6
  @@ -13,33 +13,37 @@
   extern int Axis_GetSize_SOAPStruct();
   
   
  -/*Methods corresponding to the web service methods*/
  +void* get_InteropBase_stub(){
  +	return GetStubObject(APTHTTP, "http://localhost/axis/InteropBase");
  +}
   
  +void destroy_InteropBase_stub(void* p){
  +	DestroyStubObject(p);
  +}
  +
  +/*Methods corresponding to the web service methods*/
   /*
    * This method wrap the service methodechoString
    */
  -xsd__string echoString(xsd__string Value0)
  +xsd__string echoString(void* pStub, xsd__string Value0)
   {
   	int nStatus;
  -	CallFunctions* pCall;
  +	Call* pCall = (Call*)pStub;
   	xsd__string Ret;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  -	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return Ret;
  -	pCall = g_pInteropTestPortType->__vfptr;
   	/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, C_RPC_PROVIDER)) return
Ret;
  -	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoString");
  -	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
  -	pCall->SetOperation(g_pInteropTestPortType, "echoString", "http://soapinterop.org/");
  -	pCall->AddParameter(g_pInteropTestPortType, (void*)&Value0, "inputString", XSD_STRING);
  -	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	if (AXIS_SUCCESS != pCall->_functions->Initialize(pCall->_object, C_RPC_PROVIDER))
return Ret;
  +	pCall->_functions->SetTransportProperty(pCall->_object,SOAPACTION_HEADER , "InteropBase#echoString");
  +	pCall->_functions->SetSOAPVersion(pCall->_object, SOAP_VER_1_1);
  +	pCall->_functions->SetOperation(pCall->_object, "echoString", "http://soapinterop.org/");
  +	pCall->_functions->AddParameter(pCall->_object, (void*)&Value0, "inputString",
XSD_STRING);
  +	if (AXIS_SUCCESS == pCall->_functions->Invoke(pCall->_object))
   	{
  -		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoStringResponse",
""))
  +		if(AXIS_SUCCESS == pCall->_functions->CheckMessage(pCall->_object, "echoStringResponse",
""))
   		{
  -			Ret = pCall->GetElementAsString(g_pInteropTestPortType, 0, 0);
  +			Ret = pCall->_functions->GetElementAsString(pCall->_object, 0, 0);
   		}
   	}
  -	pCall->UnInitialize(g_pInteropTestPortType);
  +	pCall->_functions->UnInitialize(pCall->_object);
   	return Ret;
   }
   
  @@ -47,30 +51,27 @@
   /*
    * This method wrap the service methodechoStringArray
    */
  -xsd__string_Array echoStringArray(xsd__string_Array Value0)
  +xsd__string_Array echoStringArray(void* pStub, xsd__string_Array Value0)
   {
   	int nStatus;
  -	CallFunctions* pCall;
  +	Call* pCall = (Call*)pStub;
   	xsd__string_Array RetArray = {NULL, 0};
   	Axis_Array array;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  -	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return RetArray;
  -	pCall = g_pInteropTestPortType->__vfptr;
  -	/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, C_RPC_PROVIDER)) return
RetArray;
  -	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoStringArray");
  -	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
  -	pCall->SetOperation(g_pInteropTestPortType, "echoStringArray", "http://soapinterop.org/");
  -	pCall->AddBasicArrayParameter(g_pInteropTestPortType, (Axis_Array*)(&Value0), XSD_STRING,
"inputStringArray");
  -	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	/* Following will establish the connections with the server too */
  +	if (AXIS_SUCCESS != pCall->_functions->Initialize(pCall->_object, C_RPC_PROVIDER))
return RetArray;
  +	pCall->_functions->SetTransportProperty(pCall->_object,SOAPACTION_HEADER , "InteropBase#echoStringArray");
  +	pCall->_functions->SetSOAPVersion(pCall->_object, SOAP_VER_1_1);
  +	pCall->_functions->SetOperation(pCall->_object, "echoStringArray", "http://soapinterop.org/");
  +	pCall->_functions->AddBasicArrayParameter(pCall->_object, (Axis_Array*)(&Value0),
XSD_STRING, "inputStringArray");
  +	if (AXIS_SUCCESS == pCall->_functions->Invoke(pCall->_object))
   	{
  -		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoStringArrayResponse",
""))
  +		if(AXIS_SUCCESS == pCall->_functions->CheckMessage(pCall->_object, "echoStringArrayResponse",
""))
   		{
  -			array = pCall->GetBasicArray(g_pInteropTestPortType, XSD_STRING, 0, 0);
  +			array = pCall->_functions->GetBasicArray(pCall->_object, XSD_STRING, 0, 0);
   			memcpy(&RetArray, &array, sizeof(Axis_Array));
   		}
   	}
  -	pCall->UnInitialize(g_pInteropTestPortType);
  +	pCall->_functions->UnInitialize(pCall->_object);
   	return RetArray;
   }
   
  @@ -78,28 +79,25 @@
   /*
    * This method wrap the service methodechoInteger
    */
  -int echoInteger(int Value0)
  +int echoInteger(void* pStub, int Value0)
   {
   	int nStatus;
  -	CallFunctions* pCall;
  +	Call* pCall = (Call*)pStub;
   	int Ret;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  -	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return Ret;
  -	pCall = g_pInteropTestPortType->__vfptr;
   	/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, C_RPC_PROVIDER)) return
Ret;
  -	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoInteger");
  -	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
  -	pCall->SetOperation(g_pInteropTestPortType, "echoInteger", "http://soapinterop.org/");
  -	pCall->AddParameter(g_pInteropTestPortType, (void*)&Value0, "inputInteger", XSD_INT);
  -	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	if (AXIS_SUCCESS != pCall->_functions->Initialize(pCall->_object, C_RPC_PROVIDER))
return Ret;
  +	pCall->_functions->SetTransportProperty(pCall->_object,SOAPACTION_HEADER , "InteropBase#echoInteger");
  +	pCall->_functions->SetSOAPVersion(pCall->_object, SOAP_VER_1_1);
  +	pCall->_functions->SetOperation(pCall->_object, "echoInteger", "http://soapinterop.org/");
  +	pCall->_functions->AddParameter(pCall->_object, (void*)&Value0, "inputInteger",
XSD_INT);
  +	if (AXIS_SUCCESS == pCall->_functions->Invoke(pCall->_object))
   	{
  -		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoIntegerResponse",
""))
  +		if(AXIS_SUCCESS == pCall->_functions->CheckMessage(pCall->_object, "echoIntegerResponse",
""))
   		{
  -			Ret = pCall->GetElementAsInt(g_pInteropTestPortType, 0, 0);
  +			Ret = pCall->_functions->GetElementAsInt(pCall->_object, 0, 0);
   		}
   	}
  -	pCall->UnInitialize(g_pInteropTestPortType);
  +	pCall->_functions->UnInitialize(pCall->_object);
   	return Ret;
   }
   
  @@ -107,30 +105,27 @@
   /*
    * This method wrap the service methodechoIntegerArray
    */
  -xsd__int_Array echoIntegerArray(xsd__int_Array Value0)
  +xsd__int_Array echoIntegerArray(void* pStub, xsd__int_Array Value0)
   {
   	int nStatus;
  -	CallFunctions* pCall;
  +	Call* pCall = (Call*)pStub;
   	xsd__int_Array RetArray = {NULL, 0};
   	Axis_Array array;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  -	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return RetArray;
  -	pCall = g_pInteropTestPortType->__vfptr;
  -	/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, C_RPC_PROVIDER)) return
RetArray;
  -	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoIntegerArray");
  -	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
  -	pCall->SetOperation(g_pInteropTestPortType, "echoIntegerArray", "http://soapinterop.org/");
  -	pCall->AddBasicArrayParameter(g_pInteropTestPortType, (Axis_Array*)(&Value0), XSD_INT,
"inputIntegerArray");
  -	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	/* Following will establish the connections with the server too */
  +	if (AXIS_SUCCESS != pCall->_functions->Initialize(pCall->_object, C_RPC_PROVIDER))
return RetArray;
  +	pCall->_functions->SetTransportProperty(pCall->_object,SOAPACTION_HEADER , "InteropBase#echoIntegerArray");
  +	pCall->_functions->SetSOAPVersion(pCall->_object, SOAP_VER_1_1);
  +	pCall->_functions->SetOperation(pCall->_object, "echoIntegerArray", "http://soapinterop.org/");
  +	pCall->_functions->AddBasicArrayParameter(pCall->_object, (Axis_Array*)(&Value0),
XSD_INT, "inputIntegerArray");
  +	if (AXIS_SUCCESS == pCall->_functions->Invoke(pCall->_object))
   	{
  -		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoIntegerArrayResponse",
""))
  +		if(AXIS_SUCCESS == pCall->_functions->CheckMessage(pCall->_object, "echoIntegerArrayResponse",
""))
   		{
  -			array = pCall->GetBasicArray(g_pInteropTestPortType, XSD_INT, 0, 0);
  +			array = pCall->_functions->GetBasicArray(pCall->_object, XSD_INT, 0, 0);
   			memcpy(&RetArray, &array, sizeof(Axis_Array));
   		}
   	}
  -	pCall->UnInitialize(g_pInteropTestPortType);
  +	pCall->_functions->UnInitialize(pCall->_object);
   	return RetArray;
   }
   
  @@ -138,28 +133,25 @@
   /*
    * This method wrap the service methodechoFloat
    */
  -float echoFloat(float Value0)
  +float echoFloat(void* pStub, float Value0)
   {
   	int nStatus;
  -	CallFunctions* pCall;
  +	Call* pCall = (Call*)pStub;
   	float Ret;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  -	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return Ret;
  -	pCall = g_pInteropTestPortType->__vfptr;
   	/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, C_RPC_PROVIDER)) return
Ret;
  -	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoFloat");
  -	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
  -	pCall->SetOperation(g_pInteropTestPortType, "echoFloat", "http://soapinterop.org/");
  -	pCall->AddParameter(g_pInteropTestPortType, (void*)&Value0, "inputFloat", XSD_FLOAT);
  -	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	if (AXIS_SUCCESS != pCall->_functions->Initialize(pCall->_object, C_RPC_PROVIDER))
return Ret;
  +	pCall->_functions->SetTransportProperty(pCall->_object,SOAPACTION_HEADER , "InteropBase#echoFloat");
  +	pCall->_functions->SetSOAPVersion(pCall->_object, SOAP_VER_1_1);
  +	pCall->_functions->SetOperation(pCall->_object, "echoFloat", "http://soapinterop.org/");
  +	pCall->_functions->AddParameter(pCall->_object, (void*)&Value0, "inputFloat",
XSD_FLOAT);
  +	if (AXIS_SUCCESS == pCall->_functions->Invoke(pCall->_object))
   	{
  -		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoFloatResponse",
""))
  +		if(AXIS_SUCCESS == pCall->_functions->CheckMessage(pCall->_object, "echoFloatResponse",
""))
   		{
  -			Ret = pCall->GetElementAsFloat(g_pInteropTestPortType, 0, 0);
  +			Ret = pCall->_functions->GetElementAsFloat(pCall->_object, 0, 0);
   		}
   	}
  -	pCall->UnInitialize(g_pInteropTestPortType);
  +	pCall->_functions->UnInitialize(pCall->_object);
   	return Ret;
   }
   
  @@ -167,30 +159,27 @@
   /*
    * This method wrap the service methodechoFloatArray
    */
  -xsd__float_Array echoFloatArray(xsd__float_Array Value0)
  +xsd__float_Array echoFloatArray(void* pStub, xsd__float_Array Value0)
   {
   	int nStatus;
  -	CallFunctions* pCall;
  +	Call* pCall = (Call*)pStub;
   	xsd__float_Array RetArray = {NULL, 0};
   	Axis_Array array;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  -	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return RetArray;
  -	pCall = g_pInteropTestPortType->__vfptr;
  -	/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, C_RPC_PROVIDER)) return
RetArray;
  -	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoFloatArray");
  -	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
  -	pCall->SetOperation(g_pInteropTestPortType, "echoFloatArray", "http://soapinterop.org/");
  -	pCall->AddBasicArrayParameter(g_pInteropTestPortType, (Axis_Array*)(&Value0), XSD_FLOAT,
"inputFloatArray");
  -	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	/* Following will establish the connections with the server too */
  +	if (AXIS_SUCCESS != pCall->_functions->Initialize(pCall->_object, C_RPC_PROVIDER))
return RetArray;
  +	pCall->_functions->SetTransportProperty(pCall->_object,SOAPACTION_HEADER , "InteropBase#echoFloatArray");
  +	pCall->_functions->SetSOAPVersion(pCall->_object, SOAP_VER_1_1);
  +	pCall->_functions->SetOperation(pCall->_object, "echoFloatArray", "http://soapinterop.org/");
  +	pCall->_functions->AddBasicArrayParameter(pCall->_object, (Axis_Array*)(&Value0),
XSD_FLOAT, "inputFloatArray");
  +	if (AXIS_SUCCESS == pCall->_functions->Invoke(pCall->_object))
   	{
  -		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoFloatArrayResponse",
""))
  +		if(AXIS_SUCCESS == pCall->_functions->CheckMessage(pCall->_object, "echoFloatArrayResponse",
""))
   		{
  -			array = pCall->GetBasicArray(g_pInteropTestPortType, XSD_FLOAT, 0, 0);
  +			array = pCall->_functions->GetBasicArray(pCall->_object, XSD_FLOAT, 0, 0);
   			memcpy(&RetArray, &array, sizeof(Axis_Array));
   		}
   	}
  -	pCall->UnInitialize(g_pInteropTestPortType);
  +	pCall->_functions->UnInitialize(pCall->_object);
   	return RetArray;
   }
   
  @@ -198,28 +187,25 @@
   /*
    * This method wrap the service methodechoStruct
    */
  -SOAPStruct* echoStruct(SOAPStruct* Value0)
  +SOAPStruct* echoStruct(void* pStub, SOAPStruct* Value0)
   {
   	int nStatus;
  -	CallFunctions* pCall;
  +	Call* pCall = (Call*)pStub;
   	SOAPStruct* pReturn = NULL;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  -	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return pReturn;
  -	pCall = g_pInteropTestPortType->__vfptr;
   	/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, C_RPC_PROVIDER)) return
pReturn;
  -	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoStruct");
  -	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
  -	pCall->SetOperation(g_pInteropTestPortType, "echoStruct", "http://soapinterop.org/");
  -	pCall->AddCmplxParameter(g_pInteropTestPortType, Value0, (void*)Axis_Serialize_SOAPStruct,
(void*)Axis_Delete_SOAPStruct, "inputStruct", 0);
  -	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	if (AXIS_SUCCESS != pCall->_functions->Initialize(pCall->_object, C_RPC_PROVIDER))
return pReturn;
  +	pCall->_functions->SetTransportProperty(pCall->_object,SOAPACTION_HEADER , "InteropBase#echoStruct");
  +	pCall->_functions->SetSOAPVersion(pCall->_object, SOAP_VER_1_1);
  +	pCall->_functions->SetOperation(pCall->_object, "echoStruct", "http://soapinterop.org/");
  +	pCall->_functions->AddCmplxParameter(pCall->_object, Value0, (void*)Axis_Serialize_SOAPStruct,
(void*)Axis_Delete_SOAPStruct, "inputStruct", 0);
  +	if (AXIS_SUCCESS == pCall->_functions->Invoke(pCall->_object))
   	{
  -		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoStructResponse",
""))
  +		if(AXIS_SUCCESS == pCall->_functions->CheckMessage(pCall->_object, "echoStructResponse",
""))
   		{
  -			pReturn = (SOAPStruct*)pCall->GetCmplxObject(g_pInteropTestPortType, (void*) Axis_DeSerialize_SOAPStruct,
(void*) Axis_Create_SOAPStruct, (void*) Axis_Delete_SOAPStruct, 0, 0);
  +			pReturn = (SOAPStruct*)pCall->_functions->GetCmplxObject(pCall->_object, (void*)
Axis_DeSerialize_SOAPStruct, (void*) Axis_Create_SOAPStruct, (void*) Axis_Delete_SOAPStruct,
0, 0);
   		}
   	}
  -	pCall->UnInitialize(g_pInteropTestPortType);
  +	pCall->_functions->UnInitialize(pCall->_object);
   	return pReturn;
   }
   
  @@ -227,30 +213,27 @@
   /*
    * This method wrap the service methodechoStructArray
    */
  -SOAPStruct_Array echoStructArray(SOAPStruct_Array Value0)
  +SOAPStruct_Array echoStructArray(void* pStub, SOAPStruct_Array Value0)
   {
   	int nStatus;
  -	CallFunctions* pCall;
  +	Call* pCall = (Call*)pStub;
   	SOAPStruct_Array RetArray = {NULL, 0};
   	Axis_Array array;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  -	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return RetArray;
  -	pCall = g_pInteropTestPortType->__vfptr;
  -	/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, C_RPC_PROVIDER)) return
RetArray;
  -	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoStructArray");
  -	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
  -	pCall->SetOperation(g_pInteropTestPortType, "echoStructArray", "http://soapinterop.org/");
  -	pCall->AddCmplxArrayParameter(g_pInteropTestPortType, (Axis_Array*)(&Value0), (void*)Axis_Serialize_SOAPStruct,
(void*)Axis_Delete_SOAPStruct, (void*) Axis_GetSize_SOAPStruct, Axis_TypeName_SOAPStruct,
Axis_URI_SOAPStruct);
  -	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	/* Following will establish the connections with the server too */
  +	if (AXIS_SUCCESS != pCall->_functions->Initialize(pCall->_object, C_RPC_PROVIDER))
return RetArray;
  +	pCall->_functions->SetTransportProperty(pCall->_object,SOAPACTION_HEADER , "InteropBase#echoStructArray");
  +	pCall->_functions->SetSOAPVersion(pCall->_object, SOAP_VER_1_1);
  +	pCall->_functions->SetOperation(pCall->_object, "echoStructArray", "http://soapinterop.org/");
  +	pCall->_functions->AddCmplxArrayParameter(pCall->_object, (Axis_Array*)(&Value0),
(void*)Axis_Serialize_SOAPStruct, (void*)Axis_Delete_SOAPStruct, (void*) Axis_GetSize_SOAPStruct,
Axis_TypeName_SOAPStruct, Axis_URI_SOAPStruct);
  +	if (AXIS_SUCCESS == pCall->_functions->Invoke(pCall->_object))
   	{
  -		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoStructArrayResponse",
""))
  +		if(AXIS_SUCCESS == pCall->_functions->CheckMessage(pCall->_object, "echoStructArrayResponse",
""))
   		{
  -			array = pCall->GetCmplxArray(g_pInteropTestPortType, (void*) Axis_DeSerialize_SOAPStruct,
(void*) Axis_Create_SOAPStruct, (void*) Axis_Delete_SOAPStruct, (void*) Axis_GetSize_SOAPStruct,
0, 0);
  +			array = pCall->_functions->GetCmplxArray(pCall->_object, (void*) Axis_DeSerialize_SOAPStruct,
(void*) Axis_Create_SOAPStruct, (void*) Axis_Delete_SOAPStruct, (void*) Axis_GetSize_SOAPStruct,
0, 0);
   			memcpy(&RetArray, &array, sizeof(Axis_Array));
   		}
   	}
  -	pCall->UnInitialize(g_pInteropTestPortType);
  +	pCall->_functions->UnInitialize(pCall->_object);
   	return RetArray;
   }
   
  @@ -258,53 +241,48 @@
   /*
    * This method wrap the service methodechoVoid
    */
  -void echoVoid()
  +void echoVoid(void* pStub)
   {
   	int nStatus;
  -	CallFunctions* pCall;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  -	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return 	pCall = g_pInteropTestPortType->__vfptr;
  +	Call* pCall = (Call*)pStub;
   	/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, C_RPC_PROVIDER)) return
;
  -	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoVoid");
  -	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
  -	pCall->SetOperation(g_pInteropTestPortType, "echoVoid", "http://soapinterop.org/");
  -	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	if (AXIS_SUCCESS != pCall->_functions->Initialize(pCall->_object, C_RPC_PROVIDER))
return ;
  +	pCall->_functions->SetTransportProperty(pCall->_object,SOAPACTION_HEADER , "InteropBase#echoVoid");
  +	pCall->_functions->SetSOAPVersion(pCall->_object, SOAP_VER_1_1);
  +	pCall->_functions->SetOperation(pCall->_object, "echoVoid", "http://soapinterop.org/");
  +	if (AXIS_SUCCESS == pCall->_functions->Invoke(pCall->_object))
   	{
  -		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoVoidResponse",
""))
  +		if(AXIS_SUCCESS == pCall->_functions->CheckMessage(pCall->_object, "echoVoidResponse",
""))
   		{
   			/*not successful*/
   		}
   	}
  -	pCall->UnInitialize(g_pInteropTestPortType);
  +	pCall->_functions->UnInitialize(pCall->_object);
   }
   
   
   /*
    * This method wrap the service methodechoBase64
    */
  -xsd__base64Binary echoBase64(xsd__base64Binary Value0)
  +xsd__base64Binary echoBase64(void* pStub, xsd__base64Binary Value0)
   {
   	int nStatus;
  -	CallFunctions* pCall;
  +	Call* pCall = (Call*)pStub;
   	xsd__base64Binary Ret;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  -	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return Ret;
  -	pCall = g_pInteropTestPortType->__vfptr;
   	/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, C_RPC_PROVIDER)) return
Ret;
  -	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoBase64");
  -	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
  -	pCall->SetOperation(g_pInteropTestPortType, "echoBase64", "http://soapinterop.org/");
  -	pCall->AddParameter(g_pInteropTestPortType, (void*)&Value0, "inputBase64", XSD_BASE64BINARY);
  -	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	if (AXIS_SUCCESS != pCall->_functions->Initialize(pCall->_object, C_RPC_PROVIDER))
return Ret;
  +	pCall->_functions->SetTransportProperty(pCall->_object,SOAPACTION_HEADER , "InteropBase#echoBase64");
  +	pCall->_functions->SetSOAPVersion(pCall->_object, SOAP_VER_1_1);
  +	pCall->_functions->SetOperation(pCall->_object, "echoBase64", "http://soapinterop.org/");
  +	pCall->_functions->AddParameter(pCall->_object, (void*)&Value0, "inputBase64",
XSD_BASE64BINARY);
  +	if (AXIS_SUCCESS == pCall->_functions->Invoke(pCall->_object))
   	{
  -		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoBase64Response",
""))
  +		if(AXIS_SUCCESS == pCall->_functions->CheckMessage(pCall->_object, "echoBase64Response",
""))
   		{
  -			Ret = pCall->GetElementAsBase64Binary(g_pInteropTestPortType, 0, 0);
  +			Ret = pCall->_functions->GetElementAsBase64Binary(pCall->_object, 0, 0);
   		}
   	}
  -	pCall->UnInitialize(g_pInteropTestPortType);
  +	pCall->_functions->UnInitialize(pCall->_object);
   	return Ret;
   }
   
  @@ -312,28 +290,25 @@
   /*
    * This method wrap the service methodechoDate
    */
  -xsd__dateTime echoDate(xsd__dateTime Value0)
  +xsd__dateTime echoDate(void* pStub, xsd__dateTime Value0)
   {
   	int nStatus;
  -	CallFunctions* pCall;
  +	Call* pCall = (Call*)pStub;
   	xsd__dateTime Ret;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  -	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return Ret;
  -	pCall = g_pInteropTestPortType->__vfptr;
   	/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, C_RPC_PROVIDER)) return
Ret;
  -	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoDate");
  -	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
  -	pCall->SetOperation(g_pInteropTestPortType, "echoDate", "http://soapinterop.org/");
  -	pCall->AddParameter(g_pInteropTestPortType, (void*)&Value0, "inputDate", XSD_DATETIME);
  -	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	if (AXIS_SUCCESS != pCall->_functions->Initialize(pCall->_object, C_RPC_PROVIDER))
return Ret;
  +	pCall->_functions->SetTransportProperty(pCall->_object,SOAPACTION_HEADER , "InteropBase#echoDate");
  +	pCall->_functions->SetSOAPVersion(pCall->_object, SOAP_VER_1_1);
  +	pCall->_functions->SetOperation(pCall->_object, "echoDate", "http://soapinterop.org/");
  +	pCall->_functions->AddParameter(pCall->_object, (void*)&Value0, "inputDate",
XSD_DATETIME);
  +	if (AXIS_SUCCESS == pCall->_functions->Invoke(pCall->_object))
   	{
  -		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoDateResponse",
""))
  +		if(AXIS_SUCCESS == pCall->_functions->CheckMessage(pCall->_object, "echoDateResponse",
""))
   		{
  -			Ret = pCall->GetElementAsDateTime(g_pInteropTestPortType, 0, 0);
  +			Ret = pCall->_functions->GetElementAsDateTime(pCall->_object, 0, 0);
   		}
   	}
  -	pCall->UnInitialize(g_pInteropTestPortType);
  +	pCall->_functions->UnInitialize(pCall->_object);
   	return Ret;
   }
   
  @@ -341,28 +316,25 @@
   /*
    * This method wrap the service methodechoHexBinary
    */
  -xsd__hexBinary echoHexBinary(xsd__hexBinary Value0)
  +xsd__hexBinary echoHexBinary(void* pStub, xsd__hexBinary Value0)
   {
   	int nStatus;
  -	CallFunctions* pCall;
  +	Call* pCall = (Call*)pStub;
   	xsd__hexBinary Ret;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  -	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return Ret;
  -	pCall = g_pInteropTestPortType->__vfptr;
   	/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, C_RPC_PROVIDER)) return
Ret;
  -	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoHexBinary");
  -	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
  -	pCall->SetOperation(g_pInteropTestPortType, "echoHexBinary", "http://soapinterop.org/");
  -	pCall->AddParameter(g_pInteropTestPortType, (void*)&Value0, "inputHexBinary", XSD_HEXBINARY);
  -	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	if (AXIS_SUCCESS != pCall->_functions->Initialize(pCall->_object, C_RPC_PROVIDER))
return Ret;
  +	pCall->_functions->SetTransportProperty(pCall->_object,SOAPACTION_HEADER , "InteropBase#echoHexBinary");
  +	pCall->_functions->SetSOAPVersion(pCall->_object, SOAP_VER_1_1);
  +	pCall->_functions->SetOperation(pCall->_object, "echoHexBinary", "http://soapinterop.org/");
  +	pCall->_functions->AddParameter(pCall->_object, (void*)&Value0, "inputHexBinary",
XSD_HEXBINARY);
  +	if (AXIS_SUCCESS == pCall->_functions->Invoke(pCall->_object))
   	{
  -		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoHexBinaryResponse",
""))
  +		if(AXIS_SUCCESS == pCall->_functions->CheckMessage(pCall->_object, "echoHexBinaryResponse",
""))
   		{
  -			Ret = pCall->GetElementAsHexBinary(g_pInteropTestPortType, 0, 0);
  +			Ret = pCall->_functions->GetElementAsHexBinary(pCall->_object, 0, 0);
   		}
   	}
  -	pCall->UnInitialize(g_pInteropTestPortType);
  +	pCall->_functions->UnInitialize(pCall->_object);
   	return Ret;
   }
   
  @@ -370,28 +342,25 @@
   /*
    * This method wrap the service methodechoDecimal
    */
  -xsd__decimal echoDecimal(xsd__decimal Value0)
  +xsd__decimal echoDecimal(void* pStub, xsd__decimal Value0)
   {
   	int nStatus;
  -	CallFunctions* pCall;
  +	Call* pCall = (Call*)pStub;
   	xsd__decimal Ret;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  -	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return Ret;
  -	pCall = g_pInteropTestPortType->__vfptr;
   	/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, C_RPC_PROVIDER)) return
Ret;
  -	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoDecimal");
  -	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
  -	pCall->SetOperation(g_pInteropTestPortType, "echoDecimal", "http://soapinterop.org/");
  -	pCall->AddParameter(g_pInteropTestPortType, (void*)&Value0, "inputDecimal", XSD_DECIMAL);
  -	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	if (AXIS_SUCCESS != pCall->_functions->Initialize(pCall->_object, C_RPC_PROVIDER))
return Ret;
  +	pCall->_functions->SetTransportProperty(pCall->_object,SOAPACTION_HEADER , "InteropBase#echoDecimal");
  +	pCall->_functions->SetSOAPVersion(pCall->_object, SOAP_VER_1_1);
  +	pCall->_functions->SetOperation(pCall->_object, "echoDecimal", "http://soapinterop.org/");
  +	pCall->_functions->AddParameter(pCall->_object, (void*)&Value0, "inputDecimal",
XSD_DECIMAL);
  +	if (AXIS_SUCCESS == pCall->_functions->Invoke(pCall->_object))
   	{
  -		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoDecimalResponse",
""))
  +		if(AXIS_SUCCESS == pCall->_functions->CheckMessage(pCall->_object, "echoDecimalResponse",
""))
   		{
  -			Ret = pCall->GetElementAsDecimal(g_pInteropTestPortType, 0, 0);
  +			Ret = pCall->_functions->GetElementAsDecimal(pCall->_object, 0, 0);
   		}
   	}
  -	pCall->UnInitialize(g_pInteropTestPortType);
  +	pCall->_functions->UnInitialize(pCall->_object);
   	return Ret;
   }
   
  @@ -399,28 +368,25 @@
   /*
    * This method wrap the service methodechoBoolean
    */
  -xsd__boolean echoBoolean(xsd__boolean Value0)
  +xsd__boolean echoBoolean(void* pStub, xsd__boolean Value0)
   {
   	int nStatus;
  -	CallFunctions* pCall;
  +	Call* pCall = (Call*)pStub;
   	xsd__boolean Ret;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  -	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return Ret;
  -	pCall = g_pInteropTestPortType->__vfptr;
   	/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, C_RPC_PROVIDER)) return
Ret;
  -	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoBoolean");
  -	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
  -	pCall->SetOperation(g_pInteropTestPortType, "echoBoolean", "http://soapinterop.org/");
  -	pCall->AddParameter(g_pInteropTestPortType, (void*)&Value0, "inputBoolean", XSD_BOOLEAN);
  -	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	if (AXIS_SUCCESS != pCall->_functions->Initialize(pCall->_object, C_RPC_PROVIDER))
return Ret;
  +	pCall->_functions->SetTransportProperty(pCall->_object,SOAPACTION_HEADER , "InteropBase#echoBoolean");
  +	pCall->_functions->SetSOAPVersion(pCall->_object, SOAP_VER_1_1);
  +	pCall->_functions->SetOperation(pCall->_object, "echoBoolean", "http://soapinterop.org/");
  +	pCall->_functions->AddParameter(pCall->_object, (void*)&Value0, "inputBoolean",
XSD_BOOLEAN);
  +	if (AXIS_SUCCESS == pCall->_functions->Invoke(pCall->_object))
   	{
  -		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoBooleanResponse",
""))
  +		if(AXIS_SUCCESS == pCall->_functions->CheckMessage(pCall->_object, "echoBooleanResponse",
""))
   		{
  -			Ret = pCall->GetElementAsBoolean(g_pInteropTestPortType, 0, 0);
  +			Ret = pCall->_functions->GetElementAsBoolean(pCall->_object, 0, 0);
   		}
   	}
  -	pCall->UnInitialize(g_pInteropTestPortType);
  +	pCall->_functions->UnInitialize(pCall->_object);
   	return Ret;
   }
   
  
  
  
  1.3       +16 -15    ws-axis/c/samples/client/interoptests/cbase/InteropTestPortType.h
  
  Index: InteropTestPortType.h
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/samples/client/interoptests/cbase/InteropTestPortType.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- InteropTestPortType.h	29 Jan 2004 08:08:32 -0000	1.2
  +++ InteropTestPortType.h	10 Feb 2004 12:19:58 -0000	1.3
  @@ -11,22 +11,23 @@
   #include "SOAPStruct_Array.h"
   #include "SOAPStruct.h"
   
  +extern void* get_InteropBase_stub();
  +extern void destroy_InteropBase_stub(void* p);
   
  -Call* g_pInteropTestPortType;
  -extern xsd__string echoString(xsd__string Value0);
  -extern xsd__string_Array echoStringArray(xsd__string_Array Value0);
  -extern int echoInteger(int Value0);
  -extern xsd__int_Array echoIntegerArray(xsd__int_Array Value0);
  -extern float echoFloat(float Value0);
  -extern xsd__float_Array echoFloatArray(xsd__float_Array Value0);
  -extern SOAPStruct* echoStruct(SOAPStruct* Value0);
  -extern SOAPStruct_Array echoStructArray(SOAPStruct_Array Value0);
  -extern void echoVoid();
  -extern xsd__base64Binary echoBase64(xsd__base64Binary Value0);
  -extern xsd__dateTime echoDate(xsd__dateTime Value0);
  -extern xsd__hexBinary echoHexBinary(xsd__hexBinary Value0);
  -extern xsd__decimal echoDecimal(xsd__decimal Value0);
  -extern xsd__boolean echoBoolean(xsd__boolean Value0);
  +extern xsd__string echoString(void* pStub, xsd__string Value0);
  +extern xsd__string_Array echoStringArray(void* pStub, xsd__string_Array Value0);
  +extern int echoInteger(void* pStub, int Value0);
  +extern xsd__int_Array echoIntegerArray(void* pStub, xsd__int_Array Value0);
  +extern float echoFloat(void* pStub, float Value0);
  +extern xsd__float_Array echoFloatArray(void* pStub, xsd__float_Array Value0);
  +extern SOAPStruct* echoStruct(void* pStub, SOAPStruct* Value0);
  +extern SOAPStruct_Array echoStructArray(void* pStub, SOAPStruct_Array Value0);
  +extern void echoVoid(void* pStub);
  +extern xsd__base64Binary echoBase64(void* pStub, xsd__base64Binary Value0);
  +extern xsd__dateTime echoDate(void* pStub, xsd__dateTime Value0);
  +extern xsd__hexBinary echoHexBinary(void* pStub, xsd__hexBinary Value0);
  +extern xsd__decimal echoDecimal(void* pStub, xsd__decimal Value0);
  +extern xsd__boolean echoBoolean(void* pStub, xsd__boolean Value0);
   
   
   #endif // !defined(__INTEROPTESTPORTTYPE_H__INCLUDED_)
  
  
  
  1.3       +35 -2     ws-axis/c/samples/server/interoptests/cbase/InteropTestPortTypeService.c
  
  Index: InteropTestPortTypeService.c
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/samples/server/interoptests/cbase/InteropTestPortTypeService.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- InteropTestPortTypeService.c	3 Feb 2004 13:04:46 -0000	1.2
  +++ InteropTestPortTypeService.c	10 Feb 2004 12:19:58 -0000	1.3
  @@ -23,7 +23,7 @@
   int GetClassInstance(BasicHandler **inst)
   {
   	*inst = malloc(sizeof(BasicHandler));
  -	(*inst)->_object = 0;	/* instantiate and provide the context object if needed */
  +	(*inst)->_object = 0;	/* instantiate and provide the context object if needed */ 
   	(*inst)->_functions = &InteropTestPortTypeWrapper_functions;
   	return (*inst)->_functions->Init((*inst)->_object);
   }
  @@ -34,9 +34,42 @@
   	if (inst)
   	{
   		inst->_functions->Fini(inst->_object);
  -		/* destroy the context object set to inst->_object if any here */
  +		/*destroy the context object set to inst->_object if any here */
   		free(inst);
   		return AXIS_SUCCESS;
   	}
   	return AXIS_FAIL;
   }
  +
  +/*
  +#define AXIS_SERVICE_LOADER_MACRO(WCName) static \
  +BasicHandlerFunctions WCName##_functions = { \
  +	##WCName##_Invoke, \
  +	##WCName##_OnFault, \
  +	##WCName##_Init, \
  +	##WCName##_Fini, \
  +	##WCName##_GetType, \
  +	##WCName##_GetBindingStyle \
  +}; \
  +STORAGE_CLASS_INFO \
  +int GetClassInstance(BasicHandler **inst) \
  +{ \
  +	*inst = malloc(sizeof(BasicHandler)); \
  +	(*inst)->_object = 0; \
  +	(*inst)->_functions = &##WCName##_functions; \
  +	return (*inst)->_functions->Init((*inst)->_object); \
  +} \
  +STORAGE_CLASS_INFO  \
  +int DestroyInstance(BasicHandler *inst) \
  +{ \
  +	if (inst) \
  +	{ \
  +		inst->_functions->Fini(inst->_object); \
  +		free(inst); \
  +		return AXIS_SUCCESS; \
  +	} \
  +	return AXIS_FAIL; \
  +}
  +
  +AXIS_SERVICE_LOADER_MACRO( InteropTestPortTypeWrapper )
  +*/
  
  
  
  1.3       +10 -0     ws-axis/c/samples/server/interoptests/cbase/InteropTestPortTypeWrapper.c
  
  Index: InteropTestPortTypeWrapper.c
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/samples/server/interoptests/cbase/InteropTestPortTypeWrapper.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- InteropTestPortTypeWrapper.c	3 Feb 2004 13:04:46 -0000	1.2
  +++ InteropTestPortTypeWrapper.c	10 Feb 2004 12:19:58 -0000	1.3
  @@ -8,11 +8,21 @@
   #include "SOAPStruct.h"
   #include "SOAPStruct_Array.h"
   
  +#define AXIS_SERIALIZER_DESERIALIZER_FUNCTIONS_DEFINITIONS(Typename) \
  +extern int Axis_DeSerialize_##Typename ( ##Typename* param, IWrapperSoapDeSerializer *pDZ);\
  +extern void* Axis_Create_##Typename ( ##Typename * param, bool bArray, int nSize);\
  +extern void Axis_Delete_##Typename ( ##Typename* param, bool bArray, int nSize);\
  +extern int Axis_Serialize_##Typename ( ##Typename* param, IWrapperSoapSerializer* pSZ,
bool bArray);\
  +extern int Axis_GetSize_##Typename ();
  +
  +AXIS_SERIALIZER_DESERIALIZER_FUNCTIONS_DEFINITIONS(SOAPStruct)
  +/*
   extern int Axis_DeSerialize_SOAPStruct(SOAPStruct* param, IWrapperSoapDeSerializer *pDZ);
   extern void* Axis_Create_SOAPStruct(SOAPStruct * param, bool bArray, int nSize);
   extern void Axis_Delete_SOAPStruct(SOAPStruct* param, bool bArray, int nSize);
   extern int Axis_Serialize_SOAPStruct(SOAPStruct* param, IWrapperSoapSerializer* pSZ, bool
bArray);
   extern int Axis_GetSize_SOAPStruct();
  +*/
   
   /*implementation of BasicHandler interface*/
   void AXISCALL InteropTestPortTypeWrapper_OnFault(void*p, void *pMsg)
  
  
  
  1.27      +13 -5     ws-axis/c/src/client/Call.cpp
  
  Index: Call.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/client/Call.cpp,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- Call.cpp	3 Feb 2004 13:04:46 -0000	1.26
  +++ Call.cpp	10 Feb 2004 12:19:58 -0000	1.27
  @@ -78,7 +78,6 @@
   
   Call::Call()
   {
  -	__vfptr = &ms_VFtable;
   	m_pAxisEngine = NULL;
   	m_pMsgData = NULL;
   	m_pIWSSZ = NULL;
  @@ -457,14 +456,23 @@
   }
   
   /*global function to be used in C stubs */
  -extern "C" Call* GetCallObject(AXIS_PROTOCOL_TYPE nProtocol, AxisChar* pchEndpointURI)
  +extern "C" void* GetStubObject(AXIS_PROTOCOL_TYPE nProtocol, AxisChar* pchEndpointURI)
   {
  -	Call* pCall = new Call();
  -	pCall->SetProtocol(nProtocol);
  -	pCall->SetEndpointURI(pchEndpointURI);
  +	Call_C* pCall = (Call_C*)malloc(sizeof(Call_C));
  +	pCall->_object = new Call();
  +	pCall->_functions = &Call::ms_VFtable;
  +	((Call*)pCall->_object)->SetProtocol(nProtocol);
  +	((Call*)pCall->_object)->SetEndpointURI(pchEndpointURI);
   	return pCall;
   }
   
  +extern "C" void DestroyStubObject(void* pCall)
  +{
  +	Call* pObject = (Call*)((Call_C*)pCall)->_object;
  +	pObject->UnInitialize();
  +	delete 	pObject;
  +	free(pCall);
  +}
   
   int Call::SetSoapHeader(SoapHeader *pSoapHeader)
   {
  
  
  

Mime
View raw message