You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by da...@apache.org on 2006/02/06 12:06:26 UTC

svn commit: r375246 - in /webservices/axis2/trunk/c: ides/anjuta/axis2c.prj include/axis2_addr_mod.h include/axis2_module.h include/axis2_module_desc.h modules/mod_addr/Makefile.am modules/mod_addr/mod_addr.c

Author: damitha
Date: Mon Feb  6 03:06:23 2006
New Revision: 375246

URL: http://svn.apache.org/viewcvs?rev=375246&view=rev
Log:
module loading related stuff.
Now I think module addressing module is ready to be loaded

Added:
    webservices/axis2/trunk/c/modules/mod_addr/mod_addr.c
Modified:
    webservices/axis2/trunk/c/ides/anjuta/axis2c.prj
    webservices/axis2/trunk/c/include/axis2_addr_mod.h
    webservices/axis2/trunk/c/include/axis2_module.h
    webservices/axis2/trunk/c/include/axis2_module_desc.h
    webservices/axis2/trunk/c/modules/mod_addr/Makefile.am

Modified: webservices/axis2/trunk/c/ides/anjuta/axis2c.prj
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/ides/anjuta/axis2c.prj?rev=375246&r1=375245&r2=375246&view=diff
==============================================================================
--- webservices/axis2/trunk/c/ides/anjuta/axis2c.prj (original)
+++ webservices/axis2/trunk/c/ides/anjuta/axis2c.prj Mon Feb  6 03:06:23 2006
@@ -247,7 +247,8 @@
 	include/axis2_http_svr_thread.h\
 	include/axis2_uuid_gen.h\
 	include/axis2_conf_init.h\
-	include/axis2_svr_callback.h
+	include/axis2_svr_callback.h\
+	include/axis2_addr_mod.h
 
 module.source.name=.
 module.source.type=
@@ -435,7 +436,10 @@
 	test/client/echo/echo_client.c\
 	test/client/echo/axis2_echo_stub.c\
 	modules/core/deployment/conf_init.c\
-	modules/core/receivers/svr_callback.c
+	modules/core/receivers/svr_callback.c\
+	modules/mod_addr/addr_in_handler.c\
+	modules/mod_addr/addr_out_handler.c\
+	modules/mod_addr/mod_addr.c
 
 module.pixmap.name=.
 module.pixmap.type=

Modified: webservices/axis2/trunk/c/include/axis2_addr_mod.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_addr_mod.h?rev=375246&r1=375245&r2=375246&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_addr_mod.h (original)
+++ webservices/axis2/trunk/c/include/axis2_addr_mod.h Mon Feb  6 03:06:23 2006
@@ -29,8 +29,11 @@
 {
 #endif
 
-AXIS2_DECLARE(axis2_handler_t*) axis2_addr_in_handler_create(axis2_env_t **env, axis2_qname_t *qname);
-AXIS2_DECLARE(axis2_handler_t*) axis2_addr_out_handler_create(axis2_env_t **env, axis2_qname_t *qname);
+AXIS2_DECLARE(axis2_handler_t*) 
+axis2_addr_in_handler_create(axis2_env_t **env, axis2_qname_t *qname);
+
+AXIS2_DECLARE(axis2_handler_t*) 
+axis2_addr_out_handler_create(axis2_env_t **env, axis2_qname_t *qname);
     
 /** @} */
     

Modified: webservices/axis2/trunk/c/include/axis2_module.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_module.h?rev=375246&r1=375245&r2=375246&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_module.h (original)
+++ webservices/axis2/trunk/c/include/axis2_module.h Mon Feb  6 03:06:23 2006
@@ -40,6 +40,7 @@
 #include <axis2_allocator.h>
 #include <axis2_string.h>
 #include <axis2_conf.h>
+#include <axis2_hash.h>
 
 
 #ifdef __cplusplus
@@ -61,7 +62,8 @@
     /* initialize the module */
     axis2_status_t (AXIS2_CALL *
     init) (struct axis2_module *module, 
-            axis2_env_t **env, struct axis2_conf *axis2_system);
+            axis2_env_t **env, 
+            struct axis2_conf *axis2_system);
 
     /* TODO figure out how to get the engage() concept done */
     /* public void engage(ExecutionChain exeChain) throws AxisFault; */
@@ -69,14 +71,24 @@
     /* shutdown the module */
     axis2_status_t (AXIS2_CALL * 
     shutdown)(struct axis2_module *module,
-                axis2_env_t **env, struct axis2_conf *axis2_system);
+                axis2_env_t **env, 
+                struct axis2_conf *axis2_system);
     
+    /** 
+     * Return a hash map of handler create functions for the module
+     * @return function ptr map 
+     */
+    axis2_status_t (AXIS2_CALL * 
+    fill_handler_create_func_map)(struct axis2_module *module,
+                                    axis2_env_t **env);
+
 
 } ;
 
 AXIS2_DECLARE_DATA struct axis2_module 
 {
     axis2_module_ops_t *ops;
+    axis2_hash_t *handler_create_func_map;
 };
 
 /**
@@ -92,8 +104,10 @@
 		((module)->ops->init (module, env, conf))
 
 #define AXIS2_MODULE_SHUTDOWN(module, env, conf) \
-		((module)->ops->free (module, env, conf))
+		((module)->ops->shutdown (module, env, conf))
 
+#define AXIS2_MODULE_FILL_HANDLER_CREATE_FUNC_MAP(module, env) \
+		((module)->ops->fill_handler_create_func_map (module, env))
 
 /** @} */
 

Modified: webservices/axis2/trunk/c/include/axis2_module_desc.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_module_desc.h?rev=375246&r1=375245&r2=375246&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_module_desc.h (original)
+++ webservices/axis2/trunk/c/include/axis2_module_desc.h Mon Feb  6 03:06:23 2006
@@ -207,7 +207,7 @@
     /**
      * @return
      */
-    axis2_module_t *(AXIS2_CALL *
+    struct axis2_module *(AXIS2_CALL *
     get_module) (axis2_module_desc_t *module_desc,
                                         axis2_env_t **env);
     
@@ -217,7 +217,7 @@
     axis2_status_t (AXIS2_CALL *
     set_module) (axis2_module_desc_t *module_desc,
                                     axis2_env_t **env,
-                                    axis2_module_t *module);                                        
+                                    struct axis2_module *module);                                        
 
 };
 

Modified: webservices/axis2/trunk/c/modules/mod_addr/Makefile.am
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/mod_addr/Makefile.am?rev=375246&r1=375245&r2=375246&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/mod_addr/Makefile.am (original)
+++ webservices/axis2/trunk/c/modules/mod_addr/Makefile.am Mon Feb  6 03:06:23 2006
@@ -1,6 +1,10 @@
+prglibdir=$(prefix)/modules/addressing
 lib_LTLIBRARIES = libaxis2_mod_addr.la
+prglib_DATA= module.xml
 AM_CPPFLAGS = $(CPPFLAGS)
-libaxis2_mod_addr_la_SOURCES = addr_in_handler.c addr_out_handler.c
+libaxis2_mod_addr_la_SOURCES = addr_in_handler.c \
+                                addr_out_handler.c \
+                                mod_addr.c
 
 libaxis2_mod_addr_la_LIBADD = 
 INCLUDES = -I$(top_builddir)/include \

Added: webservices/axis2/trunk/c/modules/mod_addr/mod_addr.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/mod_addr/mod_addr.c?rev=375246&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/mod_addr/mod_addr.c (added)
+++ webservices/axis2/trunk/c/modules/mod_addr/mod_addr.c Mon Feb  6 03:06:23 2006
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <axis2_module.h>
+#include <axis2_addr_mod.h>
+
+int 
+axis2_mod_addr_shutdown(axis2_module_t *module,
+                        axis2_env_t **env,
+                        axis2_conf_t *axis2_system);
+
+int 
+axis2_mod_addr_init(axis2_module_t *module,
+                        axis2_env_t **env,
+                        axis2_conf_t *axis2_system);
+
+
+axis2_status_t AXIS2_CALL
+axis2_mod_addr_fill_handler_create_func_map(axis2_module_t *module,
+                                            axis2_env_t **env);
+
+axis2_module_t *
+axis2_mod_addr_create(axis2_env_t **env)
+{
+    axis2_module_t *module = NULL;
+    module = AXIS2_MALLOC((*env)->allocator, 
+        sizeof(axis2_module_t));
+
+    
+    module->ops = AXIS2_MALLOC(
+        (*env)->allocator, sizeof(axis2_module_ops_t));
+
+    module->ops->shutdown = axis2_mod_addr_shutdown;
+    module->ops->init = axis2_mod_addr_init;
+    module->ops->fill_handler_create_func_map = 
+        axis2_mod_addr_fill_handler_create_func_map;
+
+    return module;
+}
+
+int 
+axis2_addr_module_init(axis2_module_t *module,
+                        axis2_env_t **env,
+                        axis2_conf_t *axis2_system)
+{
+    /* Any initialization stuff of mod_addr goes here */
+    return AXIS2_SUCCESS;
+}
+
+int 
+axis2_mod_addr_shutdown(axis2_module_t *module,
+                        axis2_env_t **env,
+                        axis2_conf_t *axis2_system)
+{
+    if(module->ops)
+    {
+        AXIS2_FREE((*env)->allocator, module->ops);
+        module->ops = NULL;
+    }
+
+    if(module->handler_create_func_map)
+    {
+        /* TODO
+         *  do the neccessary clean in hash map
+         */
+        axis2_hash_free(module->handler_create_func_map, env);
+        module->handler_create_func_map = NULL;
+    }
+    
+    if(module)
+    {
+        AXIS2_FREE((*env)->allocator, module);
+        module = NULL;
+    }
+    return AXIS2_SUCCESS; 
+}
+
+axis2_status_t AXIS2_CALL
+axis2_mod_addr_fill_handler_create_func_map(axis2_module_t *module,
+                                            axis2_env_t **env)
+{
+    module->handler_create_func_map = axis2_hash_make(env);
+    if(!module->handler_create_func_map)
+    {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, 
+            AXIS2_FAILURE);
+        return AXIS2_FAILURE;
+    }
+    axis2_hash_set(module->handler_create_func_map, "AddressingInHandler", 
+        AXIS2_HASH_KEY_STRING, axis2_addr_in_handler_create);
+
+    axis2_hash_set(module->handler_create_func_map, "AddressingOutHandler", 
+        AXIS2_HASH_KEY_STRING, axis2_addr_out_handler_create);
+
+    return AXIS2_SUCCESS;
+}
+
+/**
+ * Following block distinguish the exposed part of the dll.
+ */
+
+int axis2_get_instance(struct axis2_module **inst,
+                        axis2_env_t **env)
+{
+	*inst = axis2_mod_addr_create(env);
+    if(!(*inst))
+    {
+        return AXIS2_FAILURE;
+    }
+
+    return AXIS2_SUCCESS;
+}
+
+int axis2_remove_instance(axis2_module_t *inst,
+                            axis2_env_t **env)
+{
+    axis2_status_t status = AXIS2_FAILURE;
+	if (inst)
+	{
+        status = axis2_mod_addr_shutdown(inst, env, NULL);
+    }
+    return status;
+}