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
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_handler_desc.h>
00033 #include <axis2_phase.h>
00034 #include <axis2_phase_rule.h>
00035 #include <axis2_handler.h>
00036
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041
00042 struct axis2_phase;
00043 struct axis2_handler_desc;
00044 struct axis2_handler;
00045 struct axis2_phase_rule;
00046 typedef struct axis2_phase_holder axis2_phase_holder_t;
00047 typedef struct axis2_phase_holder_ops axis2_phase_holder_ops_t;
00048
00058 AXIS2_DECLARE_DATA struct axis2_phase_holder_ops
00059 {
00063 axis2_status_t (AXIS2_CALL *
00064 free)(axis2_phase_holder_t *phase_holder,
00065 const axis2_env_t *env);
00066
00073 axis2_bool_t (AXIS2_CALL *
00074 is_phase_exist)(axis2_phase_holder_t *phase_holder,
00075 const axis2_env_t *env,
00076 axis2_char_t *phase_name);
00077
00083 axis2_status_t (AXIS2_CALL *
00084 add_handler) (axis2_phase_holder_t *phase_holder,
00085 const axis2_env_t *env,
00086 struct axis2_handler_desc *handler);
00087
00094 struct axis2_phase * (AXIS2_CALL *
00095 get_phase) (axis2_phase_holder_t *phase_holder,
00096 const axis2_env_t *env,
00097 axis2_char_t *phase_name);
00098
00107 axis2_status_t (AXIS2_CALL *
00108 build_transport_handler_chain) (axis2_phase_holder_t *phase_holder,
00109 const axis2_env_t *env,
00110 struct axis2_phase *phase,
00111 axis2_array_list_t *handlers);
00112
00113
00114
00115 };
00116
00120 AXIS2_DECLARE_DATA struct axis2_phase_holder
00121 {
00122 axis2_phase_holder_ops_t *ops;
00123 };
00124
00129 AXIS2_EXTERN axis2_phase_holder_t * AXIS2_CALL
00130 axis2_phase_holder_create (const axis2_env_t *env);
00131
00137 AXIS2_EXTERN axis2_phase_holder_t * AXIS2_CALL
00138 axis2_phase_holder_create_with_phases (const axis2_env_t *env,
00139 axis2_array_list_t *phases);
00140
00141
00142
00143 #define AXIS2_PHASE_HOLDER_FREE(phase_holder, env) \
00144 ((phase_holder)->ops->free (phase_holder, env))
00145
00146 #define AXIS2_PHASE_HOLDER_IS_PHASE_EXIST(phase_holder, env, phase_name) \
00147 ((phase_holder)->ops->is_phase_exist (phase_holder, env, phase_name))
00148
00149 #define AXIS2_PHASE_HOLDER_ADD_HANDLER(phase_holder, env, handler) \
00150 ((phase_holder)->ops->add_handler (phase_holder, env, handler))
00151
00152 #define AXIS2_PHASE_HOLDER_GET_PHASE(phase_holder, env, phase_name) \
00153 ((phase_holder)->ops->get_phase (phase_holder, env, phase_name))
00154
00155 #define AXIS2_PHASE_HOLDER_BUILD_TRANSPORT_HANDLER_CHAIN(phase_holder, env, phase, handlers) \
00156 ((phase_holder)->ops->build_transport_handler_chain (phase_holder, env, phase, handlers))
00157
00158
00159
00162 #ifdef __cplusplus
00163 }
00164 #endif
00165 #endif