Main Page | Modules | Class List | Directories | File List | Class Members | File Members | Examples

axis2_phase_resolver.h

Go to the documentation of this file.
00001 /*
00002  * Copyright 2004,2005 The Apache Software Foundation.
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *      http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00017 #ifndef AXIS2_PHASE_RESOLVER_H
00018 #define AXIS2_PHASE_RESOLVER_H
00019 
00025 #include <axis2_const.h>
00026 #include <axis2_error.h>
00027 #include <axis2_defines.h>
00028 #include <axis2_env.h>
00029 #include <axis2_allocator.h>
00030 #include <axis2_qname.h>
00031 #include <axis2_array_list.h>
00032 #include <axis2_hash.h>
00033 #include <axis2_handler_desc.h>
00034 #include <axis2_phase.h>
00035 #include <axis2_phase_rule.h>
00036 #include <axis2_handler.h>
00037 #include <axis2_handler_desc.h>
00038 #include <axis2_flow.h>
00039 #include <axis2_module_desc.h>
00040 #include <axis2_phase_holder.h>
00041 
00042 #ifdef __cplusplus
00043 extern "C"
00044 {
00045 #endif
00046 
00047 struct axis2_phase;
00048 struct axis2_handler_desc;
00049 struct axis2_module_desc;    
00050 struct axis2_handler;
00051 struct axis2_phase_rule;
00052 struct axis2_svc;
00053 struct axis2_conf;
00054 struct axis2_op; 
00055 struct axis2_phase_holder;    
00056 typedef struct axis2_phase_resolver axis2_phase_resolver_t;
00057 typedef struct axis2_phase_resolver_ops axis2_phase_resolver_ops_t;
00058 
00068 AXIS2_DECLARE_DATA struct axis2_phase_resolver_ops
00069 {
00073    axis2_status_t (AXIS2_CALL *free)(
00074                     axis2_phase_resolver_t *phase_resolver,
00075                  const axis2_env_t *env);
00076 
00081     axis2_status_t (AXIS2_CALL *
00082     build_chains) (axis2_phase_resolver_t *phase_resolver,
00083                    const axis2_env_t *env);
00084     
00090     axis2_status_t (AXIS2_CALL *
00091     build_module_op) (axis2_phase_resolver_t *phase_resolver,
00092                                 const axis2_env_t *env,
00093                                 struct axis2_op *op);
00094     
00095     
00096     
00097     
00102     axis2_status_t (AXIS2_CALL *
00103     build_transport_chains) (axis2_phase_resolver_t *phase_resolver,
00104                              const axis2_env_t *env);
00105     
00106     
00107     axis2_status_t (AXIS2_CALL *
00108     engage_module_globally) (axis2_phase_resolver_t *phase_resolver,
00109                                 const axis2_env_t *env,
00110                                 struct axis2_module_desc *module);
00111     
00118     axis2_status_t (AXIS2_CALL *
00119     engage_module_to_svc_from_global) (axis2_phase_resolver_t *phase_resolver,
00120                                         const axis2_env_t *env,
00121                                         struct axis2_svc *svc,
00122                                         struct axis2_module_desc *module_desc);
00123     
00124     axis2_status_t (AXIS2_CALL *
00125     engage_module_to_svc) (axis2_phase_resolver_t *phase_resolver,
00126                             const axis2_env_t *env,
00127                             struct axis2_svc *svc,
00128                             struct axis2_module_desc *module_desc);
00129                                                         
00130     axis2_status_t (AXIS2_CALL *
00131     engage_module_to_op) (axis2_phase_resolver_t *phase_resolver,
00132                                     const axis2_env_t *env,
00133                                     struct axis2_op *axis_op,
00134                                     struct axis2_module_desc *module_desc);    
00135 
00136 
00137 };
00138 
00142 AXIS2_DECLARE_DATA struct axis2_phase_resolver
00143 {
00144    axis2_phase_resolver_ops_t *ops;
00145 };
00146 
00151 AXIS2_EXTERN axis2_phase_resolver_t * AXIS2_CALL 
00152 axis2_phase_resolver_create (const axis2_env_t *env);
00153 
00159 AXIS2_EXTERN axis2_phase_resolver_t * AXIS2_CALL 
00160 axis2_phase_resolver_create_with_config (const axis2_env_t *env, 
00161                                          struct axis2_conf *axis2_config);
00162 
00169 AXIS2_EXTERN axis2_phase_resolver_t * AXIS2_CALL
00170 axis2_phase_resolver_create_with_config_and_svc (const axis2_env_t *env, 
00171                                                 struct axis2_conf *axis2_config,
00172                                                 struct axis2_svc *svc);
00173 
00174 /*************************** Function macros **********************************/
00175 
00176 #define AXIS2_PHASE_RESOLVER_FREE(phase_resolver, env) \
00177       ((phase_resolver)->ops->free (phase_resolver, env))
00178 
00179 #define AXIS2_PHASE_RESOLVER_BUILD_CHAINS(phase_resolver, env) \
00180       ((phase_resolver)->ops->build_chains (phase_resolver, env))
00181 
00182 #define AXIS2_PHASE_RESOLVER_BUILD_MODULE_OP(phase_resolver, env, op) \
00183       ((phase_resolver)->ops->build_module_op (phase_resolver, env, op))
00184 
00185 #define AXIS2_PHASE_RESOLVER_BUILD_TRANSPORT_CHAINS(phase_resolver, env) \
00186       ((phase_resolver)->ops->build_transport_chains (phase_resolver, env))
00187 
00188 #define AXIS2_PHASE_RESOLVER_ENGAGE_MODULE_GLOBALLY(phase_resolver, env, module) \
00189       ((phase_resolver)->ops->engage_module_globally (phase_resolver, env, module))       
00190 
00191 #define AXIS2_PHASE_RESOLVER_ENGAGE_MODULE_TO_SVC_FROM_GLOBAL(phase_resolver, env, svc, module_desc) \
00192       ((phase_resolver)->ops->engage_module_to_svc_from_global (phase_resolver, env, svc, module_desc))
00193 
00194 #define AXIS2_PHASE_RESOLVER_ENGAGE_MODULE_TO_SVC(phase_resolver, env, svc, module_desc) \
00195       ((phase_resolver)->ops->engage_module_to_svc (phase_resolver, env, svc, module_desc))
00196 
00197 #define AXIS2_PHASE_RESOLVER_ENGAGE_MODULE_TO_OP(phase_resolver, env, axis_op, module_desc) \
00198       ((phase_resolver)->ops->engage_module_to_op (phase_resolver, env, axis_op, module_desc))
00199 
00200         
00201 /*************************** End of function macros ***************************/
00202 
00205 #ifdef __cplusplus
00206 }
00207 #endif
00208 #endif  /* AXIS2_PHASE_RESOLVER_H */

Generated on Fri Jun 16 18:02:31 2006 for Axis2/C by  doxygen 1.4.2