00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef AXIS2_OP_CLIENT_H
00019 #define AXIS2_OP_CLIENT_H
00020
00050 #include <axis2_defines.h>
00051 #include <axis2_env.h>
00052 #include <axis2_options.h>
00053 #include <axis2_msg_ctx.h>
00054 #include <axis2_callback.h>
00055
00056 #ifdef __cplusplus
00057 extern "C"
00058 {
00059 #endif
00060
00062 typedef struct axis2_op_client_ops axis2_op_client_ops_t;
00064 typedef struct axis2_op_client axis2_op_client_t;
00065
00066 struct axis2_callback_recv;
00067
00072 struct axis2_op_client_ops
00073 {
00074
00082 axis2_status_t (AXIS2_CALL *
00083 set_options)(
00084 axis2_op_client_t *op_client,
00085 const axis2_env_t *env,
00086 const axis2_options_t *options);
00087
00095 const axis2_options_t* (AXIS2_CALL *
00096 get_options)(
00097 const axis2_op_client_t *op_client,
00098 const axis2_env_t *env);
00099
00108 axis2_status_t (AXIS2_CALL *
00109 add_msg_ctx)(
00110 axis2_op_client_t *op_client,
00111 const axis2_env_t *env,
00112 axis2_msg_ctx_t *msg_ctx);
00113
00122 axis2_status_t (AXIS2_CALL *
00123 add_out_msg_ctx)(
00124 axis2_op_client_t *op_client,
00125 const axis2_env_t *env,
00126 axis2_msg_ctx_t *msg_ctx);
00127
00128
00137 const axis2_msg_ctx_t* (AXIS2_CALL *
00138 get_msg_ctx)(
00139 const axis2_op_client_t *op_client,
00140 const axis2_env_t *env,
00141 const axis2_char_t *message_label);
00142
00151 axis2_status_t (AXIS2_CALL *
00152 set_callback)(
00153 axis2_op_client_t *op_client,
00154 const axis2_env_t *env,
00155 axis2_callback_t *callback);
00162 axis2_callback_t *(AXIS2_CALL *
00163 get_callback)(
00164 axis2_op_client_t *op_client,
00165 const axis2_env_t *env);
00166
00167
00179 axis2_status_t (AXIS2_CALL *
00180 execute)(
00181 axis2_op_client_t *op_client,
00182 const axis2_env_t *env,
00183 const axis2_bool_t block);
00184
00193 axis2_status_t (AXIS2_CALL *
00194 reset)(
00195 axis2_op_client_t *op_client,
00196 const axis2_env_t *env);
00197
00207 axis2_status_t (AXIS2_CALL *
00208 complete)(
00209 axis2_op_client_t *op_client,
00210 const axis2_env_t *env,
00211 axis2_msg_ctx_t *msg_ctx);
00212
00219 axis2_op_ctx_t* (AXIS2_CALL *
00220 get_operation_context)(
00221 const axis2_op_client_t *op_client,
00222 const axis2_env_t *env);
00223
00232 axis2_status_t (AXIS2_CALL *
00233 set_callback_recv)(
00234 axis2_op_client_t *op_client,
00235 const axis2_env_t *env,
00236 struct axis2_callback_recv *callback_recv);
00237
00244 axis2_status_t (AXIS2_CALL *
00245 free)(
00246 axis2_op_client_t *op_client,
00247 const axis2_env_t *env);
00248 };
00249
00253 struct axis2_op_client
00254 {
00256 axis2_op_client_ops_t *ops;
00257 };
00258
00274 AXIS2_EXTERN axis2_op_client_t* AXIS2_CALL axis2_op_client_create(
00275 const axis2_env_t *env,
00276 axis2_op_t *op,
00277 axis2_svc_ctx_t *svc_ctx,
00278 axis2_options_t *options);
00279
00280
00283 #define AXIS2_OP_CLIENT_SET_OPTIONS(op_client, env, options) \
00284 ((op_client)->ops->set_options(op_client, env, options))
00285
00288 #define AXIS2_OP_CLIENT_GET_OPTIONS(op_client, env) \
00289 ((op_client)->ops->get_options(op_client, env))
00290
00293 #define AXIS2_OP_CLIENT_ADD_MSG_CTX(op_client, env, msg_ctx) \
00294 ((op_client)->ops->add_msg_ctx(op_client, env, msg_ctx))
00295
00298 #define AXIS2_OP_CLIENT_ADD_OUT_MSG_CTX(op_client, env, msg_ctx) \
00299 ((op_client)->ops->add_out_msg_ctx(op_client, env, msg_ctx))
00300
00303 #define AXIS2_OP_CLIENT_GET_MSG_CTX(op_client, env, message_label) \
00304 ((op_client)->ops->get_msg_ctx(op_client, env, message_label))
00305
00308 #define AXIS2_OP_CLIENT_SET_CALLBACK(op_client, env, callback) \
00309 ((op_client)->ops->set_callback(op_client, env, callback))
00310
00313 #define AXIS2_OP_CLIENT_GET_CALLBACK(op_client, env) \
00314 ((op_client)->ops->get_callback(op_client, env))
00315
00316
00319 #define AXIS2_OP_CLIENT_EXECUTE(op_client, env, block) \
00320 ((op_client)->ops->execute(op_client, env, block))
00321
00324 #define AXIS2_OP_CLIENT_RESET(op_client, env) \
00325 ((op_client)->ops->reset(op_client, env))
00326
00329 #define AXIS2_OP_CLIENT_COMPLETE(op_client, env, msg_ctx) \
00330 ((op_client)->ops->complete(op_client, env, msg_ctx))
00331
00334 #define AXIS2_OP_CLIENT_GET_OPERATION_CONTEXT(op_client, env) \
00335 ((op_client)->ops->get_operation_context(op_client, env))
00336
00339 #define AXIS2_OP_CLIENT_FREE(op_client, env) \
00340 ((op_client)->ops->free(op_client, env))
00341
00344 #define AXIS2_OP_CLIENT_SET_CALLBACK_RECV(op_client, env, callback_recv) \
00345 ((op_client)->ops->set_callback_recv(op_client, env, callback_recv))
00346
00348 #ifdef __cplusplus
00349 }
00350 #endif
00351
00352 #endif