You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by da...@apache.org on 2006/03/29 11:15:56 UTC

svn commit: r389719 - /webservices/axis2/trunk/c/modules/core/clientapi/di_client.c

Author: damitha
Date: Wed Mar 29 01:15:54 2006
New Revision: 389719

URL: http://svn.apache.org/viewcvs?rev=389719&view=rev
Log:
Added new file

Added:
    webservices/axis2/trunk/c/modules/core/clientapi/di_client.c
      - copied, changed from r389686, webservices/axis2/trunk/c/samples/client/dynamic_invocation/di_client.c

Copied: webservices/axis2/trunk/c/modules/core/clientapi/di_client.c (from r389686, webservices/axis2/trunk/c/samples/client/dynamic_invocation/di_client.c)
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/clientapi/di_client.c?p2=webservices/axis2/trunk/c/modules/core/clientapi/di_client.c&p1=webservices/axis2/trunk/c/samples/client/dynamic_invocation/di_client.c&r1=389686&r2=389719&rev=389719&view=diff
==============================================================================
--- webservices/axis2/trunk/c/samples/client/dynamic_invocation/di_client.c (original)
+++ webservices/axis2/trunk/c/modules/core/clientapi/di_client.c Wed Mar 29 01:15:54 2006
@@ -15,6 +15,7 @@
  */
 
 #include <axis2_call.h>
+#include <axis2_di_client.h>
 #include <axis2_om_stax_builder.h>
 #include <axis2_om_document.h>
 #include <axis2_om_node.h>
@@ -44,12 +45,97 @@
 #include <axis2_wsdl_ext_soap_address.h>
 #include <axis2_wsdl_ext_soap_op.h>
 
-axis2_status_t
-axis2_di_client_invoke(axis2_env_t **env,
-						void *wp, 
+/** 
+ * @brief Dynamic Invocation Client struct impl
+ *	Dynamic Invocation Client 
+ */ 
+typedef struct axis2_di_client_impl
+{
+    axis2_di_client_t di_client;
+} axis2_di_client_impl_t;
+
+#define AXIS2_INTF_TO_IMPL(di_client) \
+		((axis2_di_client_impl_t *)di_client)
+
+/************************* Function prototypes ********************************/
+
+axis2_status_t AXIS2_CALL
+	axis2_di_client_free (axis2_di_client_t *di_client,
+									axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL
+axis2_di_client_invoke(axis2_di_client_t *di_client,
+                        axis2_env_t **env,
+						axis2_char_t *wsdl_file_name, 
+				       	axis2_om_node_t *node);
+                                
+/************************** End of function prototypes ************************/
+
+axis2_di_client_t * AXIS2_CALL 
+axis2_di_client_create (axis2_env_t **env)
+{
+    axis2_di_client_impl_t *di_client_impl = NULL;
+    
+	AXIS2_ENV_CHECK(env, NULL);
+	
+	di_client_impl = (axis2_di_client_impl_t *) AXIS2_MALLOC((*env)->allocator,
+			sizeof(axis2_di_client_impl_t));
+	
+	
+	if(NULL == di_client_impl)
+    {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); 
+        return NULL;
+    }
+    
+    di_client_impl->di_client.ops = NULL;
+	
+	di_client_impl->di_client.ops = 
+		AXIS2_MALLOC ((*env)->allocator, sizeof(axis2_di_client_ops_t));
+	if(NULL == di_client_impl->di_client.ops)
+    {
+        axis2_di_client_free(&(di_client_impl->di_client), env);
+		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+    
+	di_client_impl->di_client.ops->free =  axis2_di_client_free;
+	di_client_impl->di_client.ops->invoke = 
+        axis2_di_client_invoke;
+	
+	return &(di_client_impl->di_client);
+}
+
+/***************************Function implementation****************************/
+
+axis2_status_t AXIS2_CALL 
+axis2_di_client_free (axis2_di_client_t *di_client, 
+                            axis2_env_t **env)
+{
+    axis2_di_client_impl_t *di_client_impl = NULL;
+    
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    
+    di_client_impl = AXIS2_INTF_TO_IMPL(di_client);
+    
+	if(NULL != di_client->ops)
+        AXIS2_FREE((*env)->allocator, di_client->ops);
+    
+    if(di_client_impl)
+    {
+        AXIS2_FREE((*env)->allocator, di_client_impl);
+        di_client_impl = NULL;
+    }
+}
+
+axis2_status_t AXIS2_CALL
+axis2_di_client_invoke(axis2_di_client_t *di_client,
+                        axis2_env_t **env,
+						axis2_char_t *wsdl_file_name, 
 				       	axis2_om_node_t *node)
 {
     axis2_status_t status = AXIS2_FAILURE;
+    void *wp = NULL;
     axis2_char_t *address = NULL;
     axis2_char_t *wsa_action = NULL;
     axis2_char_t *client_home = NULL;
@@ -93,7 +179,8 @@
     client_home = AXIS2_GETENV("AXIS2C_HOME");
     if (!client_home)
         client_home = "../../deploy";
-    
+   
+    wp = axis2_wsdl4c_parser_create(wsdl_file_name, "");
 	wsdl_desc = axis2_wsdl_desc_create(env);
     wsdl_pump = axis2_wsdl_pump_create(env, wsdl_desc, wp);
 	if(!wsdl_pump)