00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef AXIS2_PHASE_H
00019 #define AXIS2_PHASE_H
00020
00038 #include <axis2_defines.h>
00039 #include <axutil_env.h>
00040 #include <axis2_handler.h>
00041 #include <axis2_handler_desc.h>
00042 #include <axutil_array_list.h>
00043 #include <axutil_qname.h>
00044
00049 #define AXIS2_PHASE_BOTH_BEFORE_AFTER 0
00050
00055 #define AXIS2_PHASE_BEFORE 1
00056
00061 #define AXIS2_PHASE_AFTER 2
00062
00067 #define AXIS2_PHASE_ANYWHERE 3
00068
00069 #ifdef __cplusplus
00070 extern "C"
00071 {
00072 #endif
00073
00075 typedef struct axis2_phase axis2_phase_t;
00076
00077 struct axis2_msg_ctx;
00078
00088 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00089 axis2_phase_add_handler_at(axis2_phase_t *phase,
00090 const axutil_env_t *env,
00091 const int index,
00092 axis2_handler_t *handler);
00093
00102 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00103 axis2_phase_add_handler(axis2_phase_t *phase,
00104 const axutil_env_t *env,
00105 axis2_handler_t *handler);
00106
00107
00116 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00117 axis2_phase_remove_handler(axis2_phase_t *phase,
00118 const axutil_env_t *env,
00119 axis2_handler_t *handler);
00120
00130 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00131 axis2_phase_invoke(axis2_phase_t *phase,
00132 const axutil_env_t *env,
00133 struct axis2_msg_ctx *msg_ctx);
00134
00141 AXIS2_EXTERN const axis2_char_t *AXIS2_CALL
00142 axis2_phase_get_name(const axis2_phase_t *phase,
00143 const axutil_env_t *env);
00144
00151 AXIS2_EXTERN int AXIS2_CALL
00152 axis2_phase_get_handler_count(const axis2_phase_t *phase,
00153 const axutil_env_t *env);
00154
00163 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00164 axis2_phase_set_first_handler(axis2_phase_t *phase,
00165 const axutil_env_t *env,
00166 axis2_handler_t *handler);
00167
00176 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00177 axis2_phase_set_last_handler(axis2_phase_t *phase,
00178 const axutil_env_t *env,
00179 axis2_handler_t *handler);
00180
00191 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00192 axis2_phase_add_handler_desc(axis2_phase_t *phase,
00193 const axutil_env_t *env,
00194 axis2_handler_desc_t *handler_desc);
00195
00196
00207 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00208 axis2_phase_remove_handler_desc(axis2_phase_t *phase,
00209 const axutil_env_t *env,
00210 axis2_handler_desc_t *handler_desc);
00211
00224 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00225 axis2_phase_insert_before(axis2_phase_t *phase,
00226 const axutil_env_t *env,
00227 axis2_handler_t *handler);
00228
00241 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00242 axis2_phase_insert_after(axis2_phase_t *phase,
00243 const axutil_env_t *env,
00244 axis2_handler_t *handler);
00245
00258 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00259 axis2_phase_insert_before_and_after(axis2_phase_t *phase,
00260 const axutil_env_t *env,
00261 axis2_handler_t *handler);
00262
00273 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00274 axis2_phase_insert_handler_desc(axis2_phase_t *phase,
00275 const axutil_env_t *env,
00276 axis2_handler_desc_t *handler_desc);
00277
00284 AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL
00285 axis2_phase_get_all_handlers(const axis2_phase_t *phase,
00286 const axutil_env_t *env);
00287
00297 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00298 axis2_phase_invoke_start_from_handler(axis2_phase_t *phase,
00299 const axutil_env_t *env,
00300 const int paused_handler_index,
00301 struct axis2_msg_ctx *msg_ctx);
00302
00309 AXIS2_EXTERN void AXIS2_CALL
00310 axis2_phase_free(axis2_phase_t *phase,
00311 const axutil_env_t *env);
00312
00319 AXIS2_EXTERN axis2_phase_t *AXIS2_CALL
00320 axis2_phase_create(const axutil_env_t *env,
00321 const axis2_char_t *phase_name);
00322
00323 #ifdef __cplusplus
00324 }
00325 #endif
00326
00327 #endif