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