00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_OP_CLIENT_H
00018 #define AXIS2_OP_CLIENT_H
00019
00049 #include <axis2_defines.h>
00050 #include <axis2_env.h>
00051 #include <axis2_options.h>
00052 #include <axis2_msg_ctx.h>
00053 #include <axis2_callback.h>
00054
00055 #ifdef __cplusplus
00056 extern "C"
00057 {
00058 #endif
00059
00061 typedef struct axis2_op_client_ops axis2_op_client_ops_t;
00063 typedef struct axis2_op_client axis2_op_client_t;
00064
00065 struct axis2_callback_recv;
00066
00071 struct axis2_op_client_ops
00072 {
00073
00081 axis2_status_t (AXIS2_CALL *
00082 set_options)(
00083 axis2_op_client_t *op_client,
00084 const axis2_env_t *env,
00085 const axis2_options_t *options);
00086
00094 const axis2_options_t* (AXIS2_CALL *
00095 get_options)(
00096 const axis2_op_client_t *op_client,
00097 const axis2_env_t *env);
00098
00107 axis2_status_t (AXIS2_CALL *
00108 add_msg_ctx)(
00109 axis2_op_client_t *op_client,
00110 const axis2_env_t *env,
00111 axis2_msg_ctx_t *msg_ctx);
00112
00121 axis2_status_t (AXIS2_CALL *
00122 add_out_msg_ctx)(
00123 axis2_op_client_t *op_client,
00124 const axis2_env_t *env,
00125 axis2_msg_ctx_t *msg_ctx);
00126
00127
00136 const axis2_msg_ctx_t* (AXIS2_CALL *
00137 get_msg_ctx)(
00138 const axis2_op_client_t *op_client,
00139 const axis2_env_t *env,
00140 const axis2_char_t *message_label);
00141
00150 axis2_status_t (AXIS2_CALL *
00151 set_callback)(
00152 axis2_op_client_t *op_client,
00153 const axis2_env_t *env,
00154 axis2_callback_t *callback);
00155
00167 axis2_status_t (AXIS2_CALL *
00168 execute)(
00169 axis2_op_client_t *op_client,
00170 const axis2_env_t *env,
00171 const axis2_bool_t block);
00172
00181 axis2_status_t (AXIS2_CALL *
00182 reset)(
00183 axis2_op_client_t *op_client,
00184 const axis2_env_t *env);
00185
00195 axis2_status_t (AXIS2_CALL *
00196 complete)(
00197 axis2_op_client_t *op_client,
00198 const axis2_env_t *env,
00199 axis2_msg_ctx_t *msg_ctx);
00200
00207 axis2_op_ctx_t* (AXIS2_CALL *
00208 get_operation_context)(
00209 const axis2_op_client_t *op_client,
00210 const axis2_env_t *env);
00211
00220 axis2_status_t (AXIS2_CALL *
00221 set_callback_recv)(
00222 axis2_op_client_t *op_client,
00223 const axis2_env_t *env,
00224 struct axis2_callback_recv *callback_recv);
00225
00232 axis2_status_t (AXIS2_CALL *
00233 free)(
00234 axis2_op_client_t *op_client,
00235 const axis2_env_t *env);
00236 };
00237
00241 struct axis2_op_client
00242 {
00244 axis2_op_client_ops_t *ops;
00245 };
00246
00262 AXIS2_EXTERN axis2_op_client_t* AXIS2_CALL axis2_op_client_create(
00263 const axis2_env_t *env,
00264 axis2_op_t *op,
00265 axis2_svc_ctx_t *svc_ctx,
00266 axis2_options_t *options);
00267
00268
00271 #define AXIS2_OP_CLIENT_SET_OPTIONS(op_client, env, options) \
00272 ((op_client)->ops->set_options(op_client, env, options))
00273
00276 #define AXIS2_OP_CLIENT_GET_OPTIONS(op_client, env) \
00277 ((op_client)->ops->get_options(op_client, env))
00278
00281 #define AXIS2_OP_CLIENT_ADD_MSG_CTX(op_client, env, msg_ctx) \
00282 ((op_client)->ops->add_msg_ctx(op_client, env, msg_ctx))
00283
00286 #define AXIS2_OP_CLIENT_ADD_OUT_MSG_CTX(op_client, env, msg_ctx) \
00287 ((op_client)->ops->add_out_msg_ctx(op_client, env, msg_ctx))
00288
00291 #define AXIS2_OP_CLIENT_GET_MSG_CTX(op_client, env, message_label) \
00292 ((op_client)->ops->get_msg_ctx(op_client, env, message_label))
00293
00296 #define AXIS2_OP_CLIENT_SET_CALLBACK(op_client, env, callback) \
00297 ((op_client)->ops->set_callback(op_client, env, callback))
00298
00301 #define AXIS2_OP_CLIENT_EXECUTE(op_client, env, block) \
00302 ((op_client)->ops->execute(op_client, env, block))
00303
00306 #define AXIS2_OP_CLIENT_RESET(op_client, env) \
00307 ((op_client)->ops->reset(op_client, env))
00308
00311 #define AXIS2_OP_CLIENT_COMPLETE(op_client, env, msg_ctx) \
00312 ((op_client)->ops->complete(op_client, env, msg_ctx))
00313
00316 #define AXIS2_OP_CLIENT_GET_OPERATION_CONTEXT(op_client, env) \
00317 ((op_client)->ops->get_operation_context(op_client, env))
00318
00321 #define AXIS2_OP_CLIENT_FREE(op_client, env) \
00322 ((op_client)->ops->free(op_client, env))
00323
00326 #define AXIS2_OP_CLIENT_SET_CALLBACK_RECV(op_client, env, callback_recv) \
00327 ((op_client)->ops->set_callback_recv(op_client, env, callback_recv))
00328
00330 #ifdef __cplusplus
00331 }
00332 #endif
00333
00334 #endif