# axis2_module.h

Go to the documentation of this file.

    00001
    00002 /*
    00003 * Licensed to the Apache Software Foundation (ASF) under one or more
    00004 * contributor license agreements.  See the NOTICE file distributed with
    00005 * this work for additional information regarding copyright ownership.
    00006 * The ASF licenses this file to You under the Apache License, Version 2.0
    00007 * (the "License"); you may not use this file except in compliance with
    00008 * the License.  You may obtain a copy of the License at
    00009 *
    00010 *      http://www.apache.org/licenses/LICENSE-2.0
    00011 *
    00012 * Unless required by applicable law or agreed to in writing, software
    00013 * distributed under the License is distributed on an "AS IS" BASIS,
    00014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    00015 * See the License for the specific language governing permissions and
    00016 * limitations under the License.
    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                          /* AXIS2_MODULE_H */