00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_MSG_RECV_H
00018 #define AXIS2_MSG_RECV_H
00019
00039 #ifdef __cplusplus
00040 extern "C"
00041 {
00042 #endif
00043
00044 #include <axis2_defines.h>
00045 #include <axis2_const.h>
00046 #include <axis2_svc_skeleton.h>
00047 #include <axis2_msg_ctx.h>
00048 #include <axis2_op_ctx.h>
00049 #include <axis2_svr_callback.h>
00050
00052 #define AXIS2_SUCCESS 1
00053
00054 #define AXIS2_FAILURE 0
00055
00056 struct axis2_msg_ctx;
00058 typedef struct axis2_msg_recv_ops axis2_msg_recv_ops_t;
00060 typedef struct axis2_msg_recv axis2_msg_recv_t;
00061
00066 struct axis2_msg_recv_ops
00067 {
00074 axis2_status_t (AXIS2_CALL *
00075 free_fn)(
00076 axis2_msg_recv_t *msg_recv,
00077 const axis2_env_t *env);
00078
00092 axis2_status_t (AXIS2_CALL *
00093 receive)(
00094 axis2_msg_recv_t *msg_recv,
00095 const axis2_env_t *env,
00096 struct axis2_msg_ctx *in_msg_ctx,
00097 void *callback_recv_param);
00105 axis2_status_t (AXIS2_CALL *
00106 receive_sync)(
00107 axis2_msg_recv_t *msg_recv,
00108 const axis2_env_t *env,
00109 struct axis2_msg_ctx *in_msg_ctx,
00110 void *callback_recv_param);
00111
00119 axis2_status_t (AXIS2_CALL *
00120 receive_async)(
00121 axis2_msg_recv_t *msg_recv,
00122 const axis2_env_t *env,
00123 struct axis2_msg_ctx *in_msg_ctx,
00124 void *callback_recv_param);
00125
00133 axis2_status_t (AXIS2_CALL *
00134 invoke_in_business_logic_sync)(
00135 axis2_msg_recv_t *msg_recv,
00136 const axis2_env_t *env,
00137 struct axis2_msg_ctx *in_msg_ctx);
00138
00147 axis2_status_t (AXIS2_CALL *
00148 invoke_in_business_logic_async)(
00149 axis2_msg_recv_t *msg_recv,
00150 const axis2_env_t *env,
00151 struct axis2_msg_ctx *in_msg_ctx,
00152 struct axis2_svr_callback *svr_callback);
00153
00162 axis2_status_t (AXIS2_CALL *
00163 invoke_in_out_business_logic_sync)(
00164 axis2_msg_recv_t *msg_recv,
00165 const axis2_env_t *env,
00166 struct axis2_msg_ctx *in_msg_ctx,
00167 struct axis2_msg_ctx *out_msg_ctx);
00168
00178 axis2_status_t (AXIS2_CALL *
00179 invoke_in_out_business_logic_async)(
00180 axis2_msg_recv_t *msg_recv,
00181 const axis2_env_t *env,
00182 struct axis2_msg_ctx *in_msg_ctx,
00183 struct axis2_msg_ctx *out_msg_ctx,
00184 struct axis2_svr_callback *callback);
00185
00186
00194 axis2_svc_skeleton_t *(AXIS2_CALL *
00195 make_new_svc_obj)(
00196 axis2_msg_recv_t *msg_recv,
00197 const axis2_env_t *env,
00198 struct axis2_msg_ctx *msg_ctx);
00199
00207 axis2_svc_skeleton_t *(AXIS2_CALL *
00208 get_impl_obj)(
00209 axis2_msg_recv_t *msg_recv,
00210 const axis2_env_t *env,
00211 struct axis2_msg_ctx *msg_ctx);
00212
00220 axis2_status_t (AXIS2_CALL *
00221 set_scope)(
00222 axis2_msg_recv_t *msg_recv,
00223 const axis2_env_t *env,
00224 const axis2_char_t *scope);
00225
00226
00233 axis2_char_t *(AXIS2_CALL *
00234 get_scope)(
00235 axis2_msg_recv_t *msg_recv,
00236 const axis2_env_t *env);
00237
00245 axis2_status_t (AXIS2_CALL *
00246 delete_svc_obj)(
00247 axis2_msg_recv_t *msg_recv,
00248 const axis2_env_t *env,
00249 axis2_msg_ctx_t *msg_ctx);
00250 };
00251
00255 struct axis2_msg_recv
00256 {
00258 axis2_msg_recv_ops_t *ops;
00259 void* derived;
00260 };
00261
00269 AXIS2_EXTERN axis2_msg_recv_t *AXIS2_CALL
00270 axis2_msg_recv_create (
00271 const axis2_env_t *env);
00272
00273
00274
00277 #define AXIS2_MSG_RECV_FREE(msg_recv, env) ((msg_recv)->ops->free_fn (msg_recv, env))
00278
00281 #define AXIS2_MSG_RECV_RECEIVE(msg_recv, env, msg_ctx, callback_recv_param) \
00282 ((msg_recv)->ops->receive (msg_recv, env, msg_ctx, callback_recv_param))
00283
00286 #define AXIS2_MSG_RECV_RECEIVE_SYNC(msg_recv, env, msg_ctx, callback_recv_param) \
00287 ((msg_recv)->ops->receive_sync (msg_recv, env, msg_ctx, callback_recv_param))
00288
00291 #define AXIS2_MSG_RECV_RECEIVE_ASYNC(msg_recv, env, msg_ctx, callback_recv_param) \
00292 ((msg_recv)->ops->receive_async (msg_recv, env, msg_ctx, callback_recv_param))
00293
00296 #define AXIS2_MSG_RECV_INVOKE_IN_BUSINESS_LOGIC_SYNC(msg_recv, env, in_msg_ctx) \
00297 ((msg_recv)->ops->invoke_in_business_logic_sync(msg_recv, env, in_msg_ctx))
00298
00301 #define AXIS2_MSG_RECV_INVOKE_IN_BUSINESS_LOGIC_ASYNC(msg_recv, env, \
00302 in_msg_ctx, callback) \
00303 ((msg_recv)->ops->invoke_in_business_logic_async(msg_recv, env, \
00304 in_msg_ctx, callback))
00305
00308 #define AXIS2_MSG_RECV_INVOKE_IN_OUT_BUSINESS_LOGIC_SYNC(msg_recv, env, \
00309 in_msg_ctx, out_msg_ctx) \
00310 ((msg_recv)->ops->invoke_in_out_business_logic_sync (msg_recv, env, \
00311 in_msg_ctx, out_msg_ctx))
00312
00315 #define AXIS2_MSG_RECV_INVOKE_IN_OUT_BUSINESS_LOGIC_ASYNC(msg_recv, env, \
00316 in_msg_ctx, out_msg_ctx, callback) \
00317 ((msg_recv)->ops->invoke_in_out_business_logic_async(msg_recv, env, \
00318 in_msg_ctx, out_msg_ctx, callback))
00319
00322 #define AXIS2_MSG_RECV_MAKE_NEW_SVC_OBJ(msg_recv, env, msg_ctx) \
00323 ((msg_recv)->ops->make_new_svc_obj(msg_recv, env, msg_ctx))
00324
00327 #define AXIS2_MSG_RECV_GET_IMPL_OBJ(msg_recv, env, msg_ctx) \
00328 ((msg_recv)->ops->get_impl_obj(msg_recv, env, msg_ctx))
00329
00332 #define AXIS2_MSG_RECV_SET_SCOPE(msg_recv, env, scope) \
00333 ((msg_recv)->ops->set_scope(msg_recv, env, scope))
00334
00337 #define AXIS2_MSG_RECV_GET_SCOPE(msg_recv, env) \
00338 ((msg_recv)->ops->get_scope(msg_recv, env))
00339
00342 #define AXIS2_MSG_RECV_DELETE_SVC_OBJ(msg_recv, env, msg_ctx) \
00343 ((msg_recv)->ops->delete_svc_obj(msg_recv, env, msg_ctx))
00344
00345
00346
00348 #ifdef __cplusplus
00349 }
00350 #endif
00351
00352 #endif