00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef AXIS2_MSG_RECV_H
00019 #define AXIS2_MSG_RECV_H
00020
00040 #ifdef __cplusplus
00041 extern "C"
00042 {
00043 #endif
00044
00045 #include <axis2_defines.h>
00046 #include <axis2_const.h>
00047 #include <axis2_svc_skeleton.h>
00048 #include <axis2_msg_ctx.h>
00049 #include <axis2_op_ctx.h>
00050 #include <axis2_svr_callback.h>
00051
00053 #define AXIS2_SUCCESS 1
00054
00055 #define AXIS2_FAILURE 0
00056
00057 struct axis2_msg_ctx;
00059 typedef struct axis2_msg_recv_ops axis2_msg_recv_ops_t;
00061 typedef struct axis2_msg_recv axis2_msg_recv_t;
00062
00067 struct axis2_msg_recv_ops
00068 {
00075 axis2_status_t (AXIS2_CALL *
00076 free_fn)(
00077 axis2_msg_recv_t *msg_recv,
00078 const axis2_env_t *env);
00079
00093 axis2_status_t (AXIS2_CALL *
00094 receive)(
00095 axis2_msg_recv_t *msg_recv,
00096 const axis2_env_t *env,
00097 struct axis2_msg_ctx *in_msg_ctx,
00098 void *callback_recv_param);
00106 axis2_status_t (AXIS2_CALL *
00107 receive_sync)(
00108 axis2_msg_recv_t *msg_recv,
00109 const axis2_env_t *env,
00110 struct axis2_msg_ctx *in_msg_ctx,
00111 void *callback_recv_param);
00112
00120 axis2_status_t (AXIS2_CALL *
00121 receive_async)(
00122 axis2_msg_recv_t *msg_recv,
00123 const axis2_env_t *env,
00124 struct axis2_msg_ctx *in_msg_ctx,
00125 void *callback_recv_param);
00126
00134 axis2_status_t (AXIS2_CALL *
00135 invoke_in_business_logic_sync)(
00136 axis2_msg_recv_t *msg_recv,
00137 const axis2_env_t *env,
00138 struct axis2_msg_ctx *in_msg_ctx);
00139
00148 axis2_status_t (AXIS2_CALL *
00149 invoke_in_business_logic_async)(
00150 axis2_msg_recv_t *msg_recv,
00151 const axis2_env_t *env,
00152 struct axis2_msg_ctx *in_msg_ctx,
00153 struct axis2_svr_callback *svr_callback);
00154
00163 axis2_status_t (AXIS2_CALL *
00164 invoke_in_out_business_logic_sync)(
00165 axis2_msg_recv_t *msg_recv,
00166 const axis2_env_t *env,
00167 struct axis2_msg_ctx *in_msg_ctx,
00168 struct axis2_msg_ctx *out_msg_ctx);
00169
00179 axis2_status_t (AXIS2_CALL *
00180 invoke_in_out_business_logic_async)(
00181 axis2_msg_recv_t *msg_recv,
00182 const axis2_env_t *env,
00183 struct axis2_msg_ctx *in_msg_ctx,
00184 struct axis2_msg_ctx *out_msg_ctx,
00185 struct axis2_svr_callback *callback);
00186
00187
00195 axis2_svc_skeleton_t *(AXIS2_CALL *
00196 make_new_svc_obj)(
00197 axis2_msg_recv_t *msg_recv,
00198 const axis2_env_t *env,
00199 struct axis2_msg_ctx *msg_ctx);
00200
00208 axis2_svc_skeleton_t *(AXIS2_CALL *
00209 get_impl_obj)(
00210 axis2_msg_recv_t *msg_recv,
00211 const axis2_env_t *env,
00212 struct axis2_msg_ctx *msg_ctx);
00213
00221 axis2_status_t (AXIS2_CALL *
00222 set_scope)(
00223 axis2_msg_recv_t *msg_recv,
00224 const axis2_env_t *env,
00225 const axis2_char_t *scope);
00226
00227
00234 axis2_char_t *(AXIS2_CALL *
00235 get_scope)(
00236 axis2_msg_recv_t *msg_recv,
00237 const axis2_env_t *env);
00238
00246 axis2_status_t (AXIS2_CALL *
00247 delete_svc_obj)(
00248 axis2_msg_recv_t *msg_recv,
00249 const axis2_env_t *env,
00250 axis2_msg_ctx_t *msg_ctx);
00251 };
00252
00256 struct axis2_msg_recv
00257 {
00259 axis2_msg_recv_ops_t *ops;
00260 void* derived;
00261 };
00262
00270 AXIS2_EXTERN axis2_msg_recv_t *AXIS2_CALL
00271 axis2_msg_recv_create (
00272 const axis2_env_t *env);
00273
00274
00275
00278 #define AXIS2_MSG_RECV_FREE(msg_recv, env) ((msg_recv)->ops->free_fn (msg_recv, env))
00279
00282 #define AXIS2_MSG_RECV_RECEIVE(msg_recv, env, msg_ctx, callback_recv_param) \
00283 ((msg_recv)->ops->receive (msg_recv, env, msg_ctx, callback_recv_param))
00284
00287 #define AXIS2_MSG_RECV_RECEIVE_SYNC(msg_recv, env, msg_ctx, callback_recv_param) \
00288 ((msg_recv)->ops->receive_sync (msg_recv, env, msg_ctx, callback_recv_param))
00289
00292 #define AXIS2_MSG_RECV_RECEIVE_ASYNC(msg_recv, env, msg_ctx, callback_recv_param) \
00293 ((msg_recv)->ops->receive_async (msg_recv, env, msg_ctx, callback_recv_param))
00294
00297 #define AXIS2_MSG_RECV_INVOKE_IN_BUSINESS_LOGIC_SYNC(msg_recv, env, in_msg_ctx) \
00298 ((msg_recv)->ops->invoke_in_business_logic_sync(msg_recv, env, in_msg_ctx))
00299
00302 #define AXIS2_MSG_RECV_INVOKE_IN_BUSINESS_LOGIC_ASYNC(msg_recv, env, \
00303 in_msg_ctx, callback) \
00304 ((msg_recv)->ops->invoke_in_business_logic_async(msg_recv, env, \
00305 in_msg_ctx, callback))
00306
00309 #define AXIS2_MSG_RECV_INVOKE_IN_OUT_BUSINESS_LOGIC_SYNC(msg_recv, env, \
00310 in_msg_ctx, out_msg_ctx) \
00311 ((msg_recv)->ops->invoke_in_out_business_logic_sync (msg_recv, env, \
00312 in_msg_ctx, out_msg_ctx))
00313
00316 #define AXIS2_MSG_RECV_INVOKE_IN_OUT_BUSINESS_LOGIC_ASYNC(msg_recv, env, \
00317 in_msg_ctx, out_msg_ctx, callback) \
00318 ((msg_recv)->ops->invoke_in_out_business_logic_async(msg_recv, env, \
00319 in_msg_ctx, out_msg_ctx, callback))
00320
00323 #define AXIS2_MSG_RECV_MAKE_NEW_SVC_OBJ(msg_recv, env, msg_ctx) \
00324 ((msg_recv)->ops->make_new_svc_obj(msg_recv, env, msg_ctx))
00325
00328 #define AXIS2_MSG_RECV_GET_IMPL_OBJ(msg_recv, env, msg_ctx) \
00329 ((msg_recv)->ops->get_impl_obj(msg_recv, env, msg_ctx))
00330
00333 #define AXIS2_MSG_RECV_SET_SCOPE(msg_recv, env, scope) \
00334 ((msg_recv)->ops->set_scope(msg_recv, env, scope))
00335
00338 #define AXIS2_MSG_RECV_GET_SCOPE(msg_recv, env) \
00339 ((msg_recv)->ops->get_scope(msg_recv, env))
00340
00343 #define AXIS2_MSG_RECV_DELETE_SVC_OBJ(msg_recv, env, msg_ctx) \
00344 ((msg_recv)->ops->delete_svc_obj(msg_recv, env, msg_ctx))
00345
00346
00347
00349 #ifdef __cplusplus
00350 }
00351 #endif
00352
00353 #endif