00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_PHASE_HOLDER_H
00018 #define AXIS2_PHASE_HOLDER_H
00019
00033 #include <axis2_const.h>
00034 #include <axis2_error.h>
00035 #include <axis2_defines.h>
00036 #include <axis2_env.h>
00037 #include <axis2_allocator.h>
00038 #include <axis2_qname.h>
00039 #include <axis2_array_list.h>
00040 #include <axis2_handler_desc.h>
00041 #include <axis2_phase.h>
00042 #include <axis2_phase_rule.h>
00043 #include <axis2_handler.h>
00044
00045 #ifdef __cplusplus
00046 extern "C"
00047 {
00048 #endif
00049
00051 typedef struct axis2_phase_holder axis2_phase_holder_t;
00053 typedef struct axis2_phase_holder_ops axis2_phase_holder_ops_t;
00054
00055 struct axis2_phase;
00056 struct axis2_handler_desc;
00057 struct axis2_handler;
00058 struct axis2_phase_rule;
00059
00064 struct axis2_phase_holder_ops
00065 {
00072 axis2_status_t (AXIS2_CALL *
00073 free)(
00074 axis2_phase_holder_t *phase_holder,
00075 const axis2_env_t *env);
00076
00084 axis2_bool_t (AXIS2_CALL *
00085 is_phase_exist)(
00086 axis2_phase_holder_t *phase_holder,
00087 const axis2_env_t *env,
00088 const axis2_char_t *phase_name);
00089
00097 axis2_status_t (AXIS2_CALL *
00098 add_handler)(
00099 axis2_phase_holder_t *phase_holder,
00100 const axis2_env_t *env,
00101 struct axis2_handler_desc *handler);
00102
00111 struct axis2_phase *(AXIS2_CALL *
00112 get_phase)(
00113 const axis2_phase_holder_t *phase_holder,
00114 const axis2_env_t *env,
00115 const axis2_char_t *phase_name);
00116
00128 axis2_status_t (AXIS2_CALL *
00129 build_transport_handler_chain)(
00130 axis2_phase_holder_t *phase_holder,
00131 const axis2_env_t *env,
00132 struct axis2_phase *phase,
00133 axis2_array_list_t *handlers);
00134 };
00135
00139 struct axis2_phase_holder
00140 {
00142 axis2_phase_holder_ops_t *ops;
00143 };
00144
00150 AXIS2_EXTERN axis2_phase_holder_t *AXIS2_CALL
00151 axis2_phase_holder_create (
00152 const axis2_env_t *env);
00153
00160 AXIS2_EXTERN axis2_phase_holder_t *AXIS2_CALL
00161 axis2_phase_holder_create_with_phases (
00162 const axis2_env_t *env,
00163 axis2_array_list_t *phases);
00164
00167 #define AXIS2_PHASE_HOLDER_FREE(phase_holder, env) \
00168 ((phase_holder)->ops->free (phase_holder, env))
00169
00172 #define AXIS2_PHASE_HOLDER_IS_PHASE_EXIST(phase_holder, env, phase_name) \
00173 ((phase_holder)->ops->is_phase_exist (phase_holder, env, phase_name))
00174
00177 #define AXIS2_PHASE_HOLDER_ADD_HANDLER(phase_holder, env, handler) \
00178 ((phase_holder)->ops->add_handler (phase_holder, env, handler))
00179
00182 #define AXIS2_PHASE_HOLDER_GET_PHASE(phase_holder, env, phase_name) \
00183 ((phase_holder)->ops->get_phase (phase_holder, env, phase_name))
00184
00187 #define AXIS2_PHASE_HOLDER_BUILD_TRANSPORT_HANDLER_CHAIN(phase_holder, env, phase, handlers) \
00188 ((phase_holder)->ops->build_transport_handler_chain (phase_holder, env, phase, handlers))
00189
00192 #ifdef __cplusplus
00193 }
00194 #endif
00195 #endif