00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_PHASE_RESOLVER_H
00018 #define AXIS2_PHASE_RESOLVER_H
00019
00040 #include <axis2_const.h>
00041 #include <axis2_error.h>
00042 #include <axis2_defines.h>
00043 #include <axis2_env.h>
00044 #include <axis2_allocator.h>
00045 #include <axis2_qname.h>
00046 #include <axis2_array_list.h>
00047 #include <axis2_hash.h>
00048 #include <axis2_handler_desc.h>
00049 #include <axis2_phase.h>
00050 #include <axis2_phase_rule.h>
00051 #include <axis2_handler.h>
00052 #include <axis2_handler_desc.h>
00053 #include <axis2_flow.h>
00054 #include <axis2_module_desc.h>
00055 #include <axis2_phase_holder.h>
00056
00057 #ifdef __cplusplus
00058 extern "C"
00059 {
00060 #endif
00061
00063 typedef struct axis2_phase_resolver axis2_phase_resolver_t;
00065 typedef struct axis2_phase_resolver_ops axis2_phase_resolver_ops_t;
00066
00067 struct axis2_phase;
00068 struct axis2_handler_desc;
00069 struct axis2_module_desc;
00070 struct axis2_handler;
00071 struct axis2_phase_rule;
00072 struct axis2_svc;
00073 struct axis2_conf;
00074 struct axis2_op;
00075 struct axis2_phase_holder;
00076
00081 struct axis2_phase_resolver_ops
00082 {
00089 axis2_status_t (AXIS2_CALL *
00090 free)(
00091 axis2_phase_resolver_t *phase_resolver,
00092 const axis2_env_t *env);
00093
00101 axis2_status_t (AXIS2_CALL *
00102 build_chains)(
00103 axis2_phase_resolver_t *phase_resolver,
00104 const axis2_env_t *env);
00105
00113 axis2_status_t (AXIS2_CALL *
00114 build_module_op)(
00115 axis2_phase_resolver_t *phase_resolver,
00116 const axis2_env_t *env,
00117 struct axis2_op *op);
00118
00125 axis2_status_t (AXIS2_CALL *
00126 build_transport_chains)(
00127 axis2_phase_resolver_t *phase_resolver,
00128 const axis2_env_t *env);
00129
00130
00140 axis2_status_t (AXIS2_CALL *
00141 engage_module_globally)(
00142 axis2_phase_resolver_t *phase_resolver,
00143 const axis2_env_t *env,
00144 struct axis2_module_desc *module);
00145
00156 axis2_status_t (AXIS2_CALL *
00157 engage_module_to_svc_from_global)(
00158 axis2_phase_resolver_t *phase_resolver,
00159 const axis2_env_t *env,
00160 struct axis2_svc *svc,
00161 struct axis2_module_desc *module_desc);
00162
00173 axis2_status_t (AXIS2_CALL *
00174 engage_module_to_svc)(
00175 axis2_phase_resolver_t *phase_resolver,
00176 const axis2_env_t *env,
00177 struct axis2_svc *svc,
00178 struct axis2_module_desc *module_desc);
00179
00188 axis2_status_t (AXIS2_CALL *
00189 engage_module_to_op)(
00190 axis2_phase_resolver_t *phase_resolver,
00191 const axis2_env_t *env,
00192 struct axis2_op *axis_op,
00193 struct axis2_module_desc *module_desc);
00194
00195
00196 };
00197
00201 struct axis2_phase_resolver
00202 {
00204 axis2_phase_resolver_ops_t *ops;
00205 };
00206
00212 AXIS2_EXTERN axis2_phase_resolver_t *AXIS2_CALL
00213 axis2_phase_resolver_create (
00214 const axis2_env_t *env);
00215
00223 AXIS2_EXTERN axis2_phase_resolver_t *AXIS2_CALL
00224 axis2_phase_resolver_create_with_config (
00225 const axis2_env_t *env,
00226 struct axis2_conf *axis2_config);
00227
00237 AXIS2_EXTERN axis2_phase_resolver_t *AXIS2_CALL
00238 axis2_phase_resolver_create_with_config_and_svc (
00239 const axis2_env_t *env,
00240 struct axis2_conf *axis2_config,
00241 struct axis2_svc *svc);
00242
00245 #define AXIS2_PHASE_RESOLVER_FREE(phase_resolver, env) \
00246 ((phase_resolver)->ops->free (phase_resolver, env))
00247
00250 #define AXIS2_PHASE_RESOLVER_BUILD_CHAINS(phase_resolver, env) \
00251 ((phase_resolver)->ops->build_chains (phase_resolver, env))
00252
00255 #define AXIS2_PHASE_RESOLVER_BUILD_MODULE_OP(phase_resolver, env, op) \
00256 ((phase_resolver)->ops->build_module_op (phase_resolver, env, op))
00257
00260 #define AXIS2_PHASE_RESOLVER_BUILD_TRANSPORT_CHAINS(phase_resolver, env) \
00261 ((phase_resolver)->ops->build_transport_chains (phase_resolver, env))
00262
00265 #define AXIS2_PHASE_RESOLVER_ENGAGE_MODULE_GLOBALLY(phase_resolver, env, module) \
00266 ((phase_resolver)->ops->engage_module_globally (phase_resolver, env, module))
00267
00270 #define AXIS2_PHASE_RESOLVER_ENGAGE_MODULE_TO_SVC_FROM_GLOBAL(phase_resolver, env, svc, module_desc) \
00271 ((phase_resolver)->ops->engage_module_to_svc_from_global (phase_resolver, env, svc, module_desc))
00272
00275 #define AXIS2_PHASE_RESOLVER_ENGAGE_MODULE_TO_SVC(phase_resolver, env, svc, module_desc) \
00276 ((phase_resolver)->ops->engage_module_to_svc (phase_resolver, env, svc, module_desc))
00277
00280 #define AXIS2_PHASE_RESOLVER_ENGAGE_MODULE_TO_OP(phase_resolver, env, axis_op, module_desc) \
00281 ((phase_resolver)->ops->engage_module_to_op (phase_resolver, env, axis_op, module_desc))
00282
00283
00286 #ifdef __cplusplus
00287 }
00288 #endif
00289 #endif