00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_SVR_CALLBACK_H
00018 #define AXIS2_SVR_CALLBACK_H
00019
00025 #ifdef __cplusplus
00026 extern "C"
00027 {
00028 #endif
00029
00035 #include <axis2_defines.h>
00036 #include <axis2_const.h>
00037 #include <axis2_msg_ctx.h>
00038
00039 typedef struct axis2_svr_callback axis2_svr_callback_t;
00040 typedef struct axis2_svr_callback_ops axis2_svr_callback_ops_t;
00041
00046 struct axis2_svr_callback_ops
00047 {
00052 axis2_status_t (AXIS2_CALL *
00053 free) (axis2_svr_callback_t *svr_callback,
00054 const axis2_env_t *env);
00055
00061 axis2_status_t (AXIS2_CALL *
00062 handle_result) (axis2_svr_callback_t *svr_callback,
00063 const axis2_env_t *env,
00064 axis2_msg_ctx_t *msg_ctx);
00065
00071 axis2_status_t (AXIS2_CALL *
00072 handle_fault) (axis2_svr_callback_t *svr_callback,
00073 const axis2_env_t *env,
00074 axis2_msg_ctx_t *msg_ctx);
00075 };
00076
00081 struct axis2_svr_callback
00082 {
00083 axis2_svr_callback_ops_t *ops;
00084 };
00085
00090 AXIS2_EXTERN axis2_svr_callback_t * AXIS2_CALL
00091 axis2_svr_callback_create (const axis2_env_t *env);
00092
00093
00094
00095 #define AXIS2_SVR_CALLBACK_FREE(svr_callback, env) \
00096 ((svr_callback)->ops->free (svr_callback, env))
00097
00098 #define AXIS2_SVR_CALLBACK_HANDLER_RESULT(svr_callback, env, msg_ctx) \
00099 ((svr_callback)->ops->handle_result (svr_callback, env, msg_ctx))
00100
00101 #define AXIS2_SVR_CALLBACK_HANDLER_FAULT(svr_callback, env, msg_ctx) \
00102 ((svr_callback)->ops->handle_fault (svr_callback, env, msg_ctx))
00103
00104
00105
00107 #ifdef __cplusplus
00108 }
00109 #endif
00110
00111 #endif