00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_ENGINE_H
00018 #define AXIS2_ENGINE_H
00019
00036 #include <axis2_defines.h>
00037 #include <axis2_array_list.h>
00038 #include <axis2_env.h>
00039 #include <axis2_conf_ctx.h>
00040
00041 #ifdef __cplusplus
00042 extern "C"
00043 {
00044 #endif
00045
00047 typedef struct axis2_engine_ops axis2_engine_ops_t;
00049 typedef struct axis2_engine axis2_engine_t;
00050
00051 struct axiom_soap_fault;
00052
00053
00058 struct axis2_engine_ops
00059 {
00072 axis2_status_t (AXIS2_CALL *
00073 send)(
00074 axis2_engine_t *engine,
00075 const axis2_env_t *env,
00076 axis2_msg_ctx_t *msg_ctx);
00077
00090 axis2_status_t (AXIS2_CALL *
00091 receive)(
00092 axis2_engine_t *engine,
00093 const axis2_env_t *env,
00094 axis2_msg_ctx_t *msg_ctx);
00095
00104 axis2_status_t (AXIS2_CALL *
00105 send_fault)(
00106 axis2_engine_t *engine,
00107 const axis2_env_t *env,
00108 axis2_msg_ctx_t *msg_ctx);
00109
00118 axis2_status_t (AXIS2_CALL *
00119 receive_fault)(
00120 axis2_engine_t *engine,
00121 const axis2_env_t *env,
00122 axis2_msg_ctx_t *msg_ctx);
00123
00133 axis2_msg_ctx_t *(AXIS2_CALL *
00134 create_fault_msg_ctx)(
00135 axis2_engine_t *engine,
00136 const axis2_env_t *env,
00137 axis2_msg_ctx_t *processing_context);
00138
00147 axis2_status_t (AXIS2_CALL *
00148 extract_fault_info_from_msg_ctx)(
00149 axis2_engine_t *engine,
00150 const axis2_env_t *env,
00151 axis2_msg_ctx_t *msg_ctx,
00152 struct axiom_soap_fault *fault);
00153
00163 axis2_status_t (AXIS2_CALL *
00164 verify_ctx_built)(
00165 axis2_engine_t *engine,
00166 const axis2_env_t *env,
00167 axis2_msg_ctx_t *msg_ctx);
00168
00182 axis2_status_t (AXIS2_CALL *
00183 invoke_phases)(
00184 axis2_engine_t *engine,
00185 const axis2_env_t *env,
00186 axis2_array_list_t *phases,
00187 axis2_msg_ctx_t *msg_ctx);
00188
00205 axis2_status_t (AXIS2_CALL *
00206 resume_invocation_phases)(
00207 axis2_engine_t *engine,
00208 const axis2_env_t *env,
00209 axis2_array_list_t *phases,
00210 axis2_msg_ctx_t *msg_ctx);
00211
00219 const axis2_char_t *(AXIS2_CALL *
00220 get_sender_fault_code)(
00221 const axis2_engine_t *engine,
00222 const axis2_env_t *env,
00223 const axis2_char_t *soap_namespace);
00224
00225
00232 const axis2_char_t *(AXIS2_CALL *
00233 get_receiver_fault_code)(
00234 const axis2_engine_t *engine,
00235 const axis2_env_t *env,
00236 const axis2_char_t *soap_namespace);
00237
00244 axis2_status_t (AXIS2_CALL *
00245 free)(
00246 axis2_engine_t *engine,
00247 const axis2_env_t *env);
00248
00258 axis2_status_t (AXIS2_CALL *
00259 resume_receive)(
00260 axis2_engine_t *engine,
00261 const axis2_env_t *env,
00262 axis2_msg_ctx_t *msg_ctx);
00263
00273 axis2_status_t (AXIS2_CALL *
00274 resume_send)(
00275 axis2_engine_t *engine,
00276 const axis2_env_t *env,
00277 axis2_msg_ctx_t *msg_ctx);
00278
00279 };
00280
00284 struct axis2_engine
00285 {
00286
00288 axis2_engine_ops_t *ops;
00289 };
00290
00297 AXIS2_EXTERN axis2_engine_t *AXIS2_CALL
00298 axis2_engine_create(
00299 const axis2_env_t *env,
00300 axis2_conf_ctx_t *conf_ctx);
00301
00304 #define AXIS2_ENGINE_SEND(engine, env, msg_ctx)\
00305 ((engine)->ops->send(engine, env, msg_ctx))
00306
00309 #define AXIS2_ENGINE_RECEIVE(engine, env, msg_ctx) \
00310 ((engine)->ops->receive(engine, env, msg_ctx))
00311
00314 #define AXIS2_ENGINE_SEND_FAULT(engine, env, msg_ctx) \
00315 ((engine)->ops->send_fault(engine, env, msg_ctx))
00316
00319 #define AXIS2_ENGINE_RECEIVE_FAULT(engine, env, msg_ctx) \
00320 ((engine)->ops->receive_fault(engine, env, msg_ctx))
00321
00324 #define AXIS2_ENGINE_CREATE_FAULT_MSG_CTX(engine, env, msg_ctx) \
00325 ((engine)->ops->create_fault_msg_ctx(engine, env, msg_ctx))
00326
00329 #define AXIS2_ENGINE_EXTRACT_FAULT_INFO_FROM_MSG_CTX(engine, env, msg_ctx, fault) \
00330 ((engine)->ops->extract_fault_info_from_msg_ctx(engine, env, msg_ctx, fault))
00331
00334 #define AXIS2_ENGINE_VERIFY_CTX_BUILT(engine, env, msg_ctx) \
00335 ((engine)->ops->verify_ctx_built(engine, env, msg_ctx))
00336
00339 #define AXIS2_ENGINE_INVOKE_PHASES(engine, env, phases, msg_ctx) \
00340 ((engine)->ops->invoke_phases(engine, env, phases, msg_ctx))
00341
00344 #define AXIS2_ENGINE_RESUME_INVOCATION_PHASES(engine, env, phases, msg_ctx) \
00345 ((engine)->ops->resume_invocation_phases(engine, env, phases, msg_ctx))
00346
00349 #define AXIS2_ENGINE_GET_SENDER_FAULT_CODE(engine, env, soap_namespace) \
00350 ((engine)->ops->get_sender_fault_code(engine, env, soap_namespace))
00351
00354 #define AXIS2_ENGINE_GET_RECEIVER_FAULT_CODE(engine, env, soap_namespace) \
00355 ((engine)->ops->get_receiver_fault_code(engine, env, soap_namespace))
00356
00359 #define AXIS2_ENGINE_FREE(engine, env) \
00360 ((engine)->ops->free(engine, env))
00361
00364 #define AXIS2_ENGINE_RESUME_SEND(engine, env, msg_ctx)\
00365 ((engine)->ops->resume_send(engine, env, msg_ctx))
00366
00369 #define AXIS2_ENGINE_RESUME_RECEIVE(engine, env, msg_ctx) \
00370 ((engine)->ops->resume_receive(engine, env, msg_ctx))
00371
00373 #ifdef __cplusplus
00374 }
00375 #endif
00376
00377 #endif