00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef AXIS2_MODULE_H
00019 #define AXIS2_MODULE_H
00020
00040 #include <axis2_const.h>
00041 #include <axutil_error.h>
00042 #include <axis2_defines.h>
00043 #include <axutil_env.h>
00044 #include <axutil_allocator.h>
00045 #include <axutil_string.h>
00046 #include <axis2_conf.h>
00047 #include <axis2_module_desc.h>
00048 #include <axutil_hash.h>
00049
00050 #ifdef __cplusplus
00051 extern "C"
00052 {
00053 #endif
00054
00056 typedef struct axis2_module_ops axis2_module_ops_t;
00057
00059 typedef struct axis2_module axis2_module_t;
00060
00061 struct axis2_conf;
00062
00074 struct axis2_module_ops
00075 {
00076
00085 axis2_status_t(
00086 AXIS2_CALL
00087 * init)(
00088 axis2_module_t * module,
00089 const axutil_env_t * env,
00090 struct axis2_conf_ctx * conf_ctx,
00091 axis2_module_desc_t * module_desc);
00092
00099 axis2_status_t(
00100 AXIS2_CALL
00101 * shutdown)(
00102 axis2_module_t * module,
00103 const axutil_env_t * env);
00104
00111 axis2_status_t(
00112 AXIS2_CALL
00113 * fill_handler_create_func_map)(
00114 axis2_module_t * module,
00115 const axutil_env_t * env);
00116
00117 };
00118
00122 struct axis2_module
00123 {
00124
00126 const axis2_module_ops_t *ops;
00127
00129 axutil_hash_t *handler_create_func_map;
00130 };
00131
00137 AXIS2_EXTERN axis2_module_t *AXIS2_CALL
00138 axis2_module_create(
00139 const axutil_env_t * env);
00140
00143 #define axis2_module_init(module, env, conf_ctx, module_desc) \
00144 ((module)->ops->init (module, env, conf_ctx, module_desc))
00145
00148 #define axis2_module_shutdown(module, env) \
00149 ((module)->ops->shutdown (module, env))
00150
00153 #define axis2_module_fill_handler_create_func_map(module, env) \
00154 ((module)->ops->fill_handler_create_func_map (module, env))
00155
00158 #ifdef __cplusplus
00159 }
00160 #endif
00161 #endif