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)