00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef AXIS2_TRANSPORT_SENDER_H
00019 #define AXIS2_TRANSPORT_SENDER_H
00020
00032 #include <axis2_const.h>
00033 #include <axis2_error.h>
00034 #include <axis2_defines.h>
00035 #include <axis2_env.h>
00036 #include <axis2_allocator.h>
00037 #include <axis2_transport_out_desc.h>
00038 #include <axis2_ctx.h>
00039 #include <axis2_msg_ctx.h>
00040
00041 #ifdef __cplusplus
00042 extern "C"
00043 {
00044 #endif
00045
00046 struct axis2_transport_out_desc;
00047 struct axis2_ctx;
00048 struct axis2_msg_ctx;
00049 struct axis2_handler;
00051 typedef struct axis2_transport_sender axis2_transport_sender_t;
00053 typedef struct axis2_transport_sender_ops axis2_transport_sender_ops_t;
00054
00059 struct axis2_transport_sender_ops
00060 {
00066 axis2_status_t (AXIS2_CALL *
00067 free)(
00068 axis2_transport_sender_t *transport_sender,
00069 const axis2_env_t *env);
00070
00079 axis2_status_t (AXIS2_CALL *
00080 init)(
00081 axis2_transport_sender_t *transport_sender,
00082 const axis2_env_t *env,
00083 struct axis2_conf_ctx *conf_ctx,
00084 struct axis2_transport_out_desc *transport_out);
00085
00093 axis2_status_t (AXIS2_CALL *
00094 cleanup)(
00095 axis2_transport_sender_t *transport_sender,
00096 const axis2_env_t *env,
00097 struct axis2_msg_ctx *msg_ctx);
00098
00106 axis2_status_t (AXIS2_CALL *
00107 invoke)(
00108 axis2_transport_sender_t *transport_sender,
00109 const axis2_env_t *env,
00110 struct axis2_msg_ctx *msg_ctx);
00111
00112 };
00113
00119 struct axis2_transport_sender
00120 {
00122 axis2_transport_sender_ops_t *ops;
00123 };
00124
00130 AXIS2_EXTERN axis2_transport_sender_t * AXIS2_CALL
00131 axis2_transport_sender_create (
00132 const axis2_env_t *env);
00133
00134
00135
00138 #define AXIS2_TRANSPORT_SENDER_FREE(transport_sender, env) \
00139 ((transport_sender->ops)->free (transport_sender, env))
00140
00143 #define AXIS2_TRANSPORT_SENDER_INIT(transport_sender, env, conf_context, transport_out) \
00144 ((transport_sender->ops)->init (transport_sender, env, conf_context, transport_out))
00145
00148 #define AXIS2_TRANSPORT_SENDER_INVOKE(transport_sender, env, msg_ctx) \
00149 ((transport_sender->ops)->invoke (transport_sender, env, msg_ctx))
00150
00153 #define AXIS2_TRANSPORT_SENDER_CLEANUP(transport_sender, env, msg_ctx) \
00154 ((transport_sender->ops)->cleanup (transport_sender, env, msg_ctx))
00155
00156
00157
00160 #ifdef __cplusplus
00161 }
00162 #endif
00163 #endif