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
00032 #include <axis2_const.h>
00033 #include <axis2_error.h>
00034 #include <axis2_defines.h>
00035 #include <axis2_env.h>
00036 #include <axis2_allocator.h>
00037 #include <axis2_qname.h>
00038 #include <axis2_array_list.h>
00039 #include <axis2_handler_desc.h>
00040 #include <axis2_phase.h>
00041 #include <axis2_phase_rule.h>
00042 #include <axis2_handler.h>
00043
00044 #ifdef __cplusplus
00045 extern "C"
00046 {
00047 #endif
00048
00049 struct axis2_phase;
00050 struct axis2_handler_desc;
00051 struct axis2_handler;
00052 struct axis2_phase_rule;
00054 typedef struct axis2_phase_holder axis2_phase_holder_t;
00056 typedef struct axis2_phase_holder_ops axis2_phase_holder_ops_t;
00057
00062 struct axis2_phase_holder_ops
00063 {
00070 axis2_status_t (AXIS2_CALL *
00071 free)(
00072 axis2_phase_holder_t *phase_holder,
00073 const axis2_env_t *env);
00074
00081 axis2_bool_t (AXIS2_CALL *
00082 is_phase_exist)(
00083 axis2_phase_holder_t *phase_holder,
00084 const axis2_env_t *env,
00085 const axis2_char_t *phase_name);
00086
00093 axis2_status_t (AXIS2_CALL *
00094 add_handler)(
00095 axis2_phase_holder_t *phase_holder,
00096 const axis2_env_t *env,
00097 struct axis2_handler_desc *handler);
00098
00106 struct axis2_phase *(AXIS2_CALL *
00107 get_phase)(
00108 const axis2_phase_holder_t *phase_holder,
00109 const axis2_env_t *env,
00110 const axis2_char_t *phase_name);
00111
00122 axis2_status_t (AXIS2_CALL *
00123 build_transport_handler_chain)(
00124 axis2_phase_holder_t *phase_holder,
00125 const axis2_env_t *env,
00126 struct axis2_phase *phase,
00127 axis2_array_list_t *handlers);
00128 };
00129
00133 struct axis2_phase_holder
00134 {
00136 axis2_phase_holder_ops_t *ops;
00137 };
00138
00144 AXIS2_EXTERN axis2_phase_holder_t *AXIS2_CALL
00145 axis2_phase_holder_create (
00146 const axis2_env_t *env);
00147
00154 AXIS2_EXTERN axis2_phase_holder_t *AXIS2_CALL
00155 axis2_phase_holder_create_with_phases (
00156 const axis2_env_t *env,
00157 axis2_array_list_t *phases);
00158
00159
00160
00163 #define AXIS2_PHASE_HOLDER_FREE(phase_holder, env) \
00164 ((phase_holder)->ops->free (phase_holder, env))
00165
00168 #define AXIS2_PHASE_HOLDER_IS_PHASE_EXIST(phase_holder, env, phase_name) \
00169 ((phase_holder)->ops->is_phase_exist (phase_holder, env, phase_name))
00170
00173 #define AXIS2_PHASE_HOLDER_ADD_HANDLER(phase_holder, env, handler) \
00174 ((phase_holder)->ops->add_handler (phase_holder, env, handler))
00175
00178 #define AXIS2_PHASE_HOLDER_GET_PHASE(phase_holder, env, phase_name) \
00179 ((phase_holder)->ops->get_phase (phase_holder, env, phase_name))
00180
00183 #define AXIS2_PHASE_HOLDER_BUILD_TRANSPORT_HANDLER_CHAIN(phase_holder, env, phase, handlers) \
00184 ((phase_holder)->ops->build_transport_handler_chain (phase_holder, env, phase, handlers))
00185
00186
00187
00190 #ifdef __cplusplus
00191 }
00192 #endif
00193 #endif