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
00026 #ifdef __cplusplus
00027 extern "C"
00028 {
00029 #endif
00030
00036 #include <axis2_defines.h>
00037 #include <axis2_const.h>
00038 #include <axis2_svc_skeleton.h>
00039 #include <axis2_msg_ctx.h>
00040 #include <axis2_op_ctx.h>
00041 #include <axis2_svr_callback.h>
00042
00043 #define AXIS2_SUCCESS 1
00044 #define AXIS2_FAILURE 0
00045
00046 struct axis2_msg_ctx;
00047 typedef struct axis2_msg_recv axis2_msg_recv_t;
00048 typedef struct axis2_msg_recv_ops axis2_msg_recv_ops_t;
00049
00054 struct axis2_msg_recv_ops
00055 {
00060 axis2_status_t (AXIS2_CALL *
00061 free) (axis2_msg_recv_t *msg_recv,
00062 const axis2_env_t *env);
00063
00075 axis2_status_t (AXIS2_CALL *
00076 receive) (axis2_msg_recv_t *msg_recv,
00077 const axis2_env_t *env,
00078 struct axis2_msg_ctx *in_msg_ctx,
00079 void *callback_recv_param);
00085 axis2_status_t (AXIS2_CALL *
00086 receive_sync) (axis2_msg_recv_t *msg_recv,
00087 const axis2_env_t *env,
00088 struct axis2_msg_ctx *in_msg_ctx,
00089 void *callback_recv_param);
00090
00096 axis2_status_t (AXIS2_CALL *
00097 receive_async) (axis2_msg_recv_t *msg_recv,
00098 const axis2_env_t *env,
00099 struct axis2_msg_ctx *in_msg_ctx,
00100 void *callback_recv_param);
00101
00107 axis2_status_t (AXIS2_CALL *
00108 invoke_in_business_logic_sync) (axis2_msg_recv_t *msg_recv,
00109 const axis2_env_t *env,
00110 struct axis2_msg_ctx *in_msg_ctx);
00111
00118 axis2_status_t (AXIS2_CALL *
00119 invoke_in_business_logic_async) (axis2_msg_recv_t *msg_recv,
00120 const axis2_env_t *env,
00121 struct axis2_msg_ctx *in_msg_ctx,
00122 struct axis2_svr_callback *svr_callback);
00123
00130 axis2_status_t (AXIS2_CALL *
00131 invoke_in_out_business_logic_sync) (axis2_msg_recv_t *msg_recv,
00132 const axis2_env_t *env,
00133 struct axis2_msg_ctx *in_msg_ctx,
00134 struct axis2_msg_ctx *out_msg_ctx);
00135
00143 axis2_status_t (AXIS2_CALL *
00144 invoke_in_out_business_logic_async) (axis2_msg_recv_t *msg_recv,
00145 const axis2_env_t *env,
00146 struct axis2_msg_ctx *in_msg_ctx,
00147 struct axis2_msg_ctx *out_msg_ctx,
00148 struct axis2_svr_callback *callback);
00149
00150
00156 axis2_svc_skeleton_t * (AXIS2_CALL *
00157 make_new_svc_obj) (axis2_msg_recv_t *msg_recv,
00158 const axis2_env_t *env,
00159 struct axis2_msg_ctx *msg_ctx);
00160
00166 axis2_svc_skeleton_t * (AXIS2_CALL *
00167 get_impl_obj) (axis2_msg_recv_t *msg_recv,
00168 const axis2_env_t *env,
00169 struct axis2_msg_ctx *msg_ctx);
00170
00176 axis2_status_t (AXIS2_CALL *
00177 set_scope) (axis2_msg_recv_t *msg_recv,
00178 const axis2_env_t *env,
00179 const axis2_char_t *scope);
00180
00181
00187 axis2_char_t * (AXIS2_CALL *
00188 get_scope) (axis2_msg_recv_t *msg_recv,
00189 const axis2_env_t *env);
00190
00196 axis2_status_t (AXIS2_CALL *
00197 delete_svc_obj) (axis2_msg_recv_t *msg_recv,
00198 const axis2_env_t *env,
00199 axis2_msg_ctx_t *msg_ctx);
00200 };
00201
00208 struct axis2_msg_recv
00209 {
00210 axis2_msg_recv_ops_t *ops;
00211 void* derived;
00212 };
00213
00220 AXIS2_EXTERN axis2_msg_recv_t * AXIS2_CALL
00221 axis2_msg_recv_create (const axis2_env_t *env);
00222
00223
00224
00225 #define AXIS2_MSG_RECV_FREE(msg_recv, env) ((msg_recv)->ops->free (msg_recv, env))
00226
00227 #define AXIS2_MSG_RECV_RECEIVE(msg_recv, env, msg_ctx, callback_recv_param) \
00228 ((msg_recv)->ops->receive (msg_recv, env, msg_ctx, callback_recv_param))
00229
00230 #define AXIS2_MSG_RECV_RECEIVE_SYNC(msg_recv, env, msg_ctx, callback_recv_param) \
00231 ((msg_recv)->ops->receive_sync (msg_recv, env, msg_ctx, callback_recv_param))
00232
00233 #define AXIS2_MSG_RECV_RECEIVE_ASYNC(msg_recv, env, msg_ctx, callback_recv_param) \
00234 ((msg_recv)->ops->receive_async (msg_recv, env, msg_ctx, callback_recv_param))
00235
00236 #define AXIS2_MSG_RECV_INVOKE_IN_BUSINESS_LOGIC_SYNC(msg_recv, env, in_msg_ctx) \
00237 ((msg_recv)->ops->invoke_in_business_logic_sync(msg_recv, env, in_msg_ctx))
00238
00239 #define AXIS2_MSG_RECV_INVOKE_IN_BUSINESS_LOGIC_ASYNC(msg_recv, env, \
00240 in_msg_ctx, callback) \
00241 ((msg_recv)->ops->invoke_in_business_logic_async(msg_recv, env, \
00242 in_msg_ctx, callback))
00243
00244 #define AXIS2_MSG_RECV_INVOKE_IN_OUT_BUSINESS_LOGIC_SYNC(msg_recv, env, \
00245 in_msg_ctx, out_msg_ctx) \
00246 ((msg_recv)->ops->invoke_in_out_business_logic_sync (msg_recv, env, \
00247 in_msg_ctx, out_msg_ctx))
00248
00249 #define AXIS2_MSG_RECV_INVOKE_IN_OUT_BUSINESS_LOGIC_ASYNC(msg_recv, env, \
00250 in_msg_ctx, out_msg_ctx, callback) \
00251 ((msg_recv)->ops->invoke_in_out_business_logic_async(msg_recv, env, \
00252 in_msg_ctx, out_msg_ctx, callback))
00253
00254 #define AXIS2_MSG_RECV_MAKE_NEW_SVC_OBJ(msg_recv, env, msg_ctx) \
00255 ((msg_recv)->ops->make_new_svc_obj(msg_recv, env, msg_ctx))
00256
00257 #define AXIS2_MSG_RECV_GET_IMPL_OBJ(msg_recv, env, msg_ctx) \
00258 ((msg_recv)->ops->get_impl_obj(msg_recv, env, msg_ctx))
00259
00260 #define AXIS2_MSG_RECV_SET_SCOPE(msg_recv, env, scope) \
00261 ((msg_recv)->ops->set_scope(msg_recv, env, scope))
00262
00263 #define AXIS2_MSG_RECV_GET_SCOPE(msg_recv, env) \
00264 ((msg_recv)->ops->get_scope(msg_recv, env))
00265
00266 #define AXIS2_MSG_RECV_DELETE_SVC_OBJ(msg_recv, env, msg_ctx) \
00267 ((msg_recv)->ops->delete_svc_obj(msg_recv, env, msg_ctx))
00268
00269
00270
00272 #ifdef __cplusplus
00273 }
00274 #endif
00275
00276 #endif