00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef AXIS2_TRANSPORT_SENDER_H
00020 #define AXIS2_TRANSPORT_SENDER_H
00021
00033 #include <axis2_const.h>
00034 #include <axutil_error.h>
00035 #include <axis2_defines.h>
00036 #include <axutil_env.h>
00037 #include <axutil_allocator.h>
00038 #include <axis2_transport_out_desc.h>
00039 #include <axis2_ctx.h>
00040 #include <axis2_msg_ctx.h>
00041
00042 #ifdef __cplusplus
00043 extern "C"
00044 {
00045 #endif
00046
00047 struct axis2_transport_out_desc;
00048 struct axis2_ctx;
00049 struct axis2_msg_ctx;
00050 struct axis2_handler;
00051
00053 typedef struct axis2_transport_sender axis2_transport_sender_t;
00054
00056 typedef struct axis2_transport_sender_ops axis2_transport_sender_ops_t;
00057
00062 struct axis2_transport_sender_ops
00063 {
00064
00073 axis2_status_t(
00074 AXIS2_CALL
00075 * init)(
00076 axis2_transport_sender_t * transport_sender,
00077 const axutil_env_t * env,
00078 struct axis2_conf_ctx * conf_ctx,
00079 struct axis2_transport_out_desc * transport_out);
00080
00088 axis2_status_t(
00089 AXIS2_CALL
00090 * invoke)(
00091 axis2_transport_sender_t * transport_sender,
00092 const axutil_env_t * env,
00093 struct axis2_msg_ctx * msg_ctx);
00094
00102 axis2_status_t(
00103 AXIS2_CALL
00104 * cleanup)(
00105 axis2_transport_sender_t * transport_sender,
00106 const axutil_env_t * env,
00107 struct axis2_msg_ctx * msg_ctx);
00108
00114 void(
00115 AXIS2_CALL
00116 * free)(
00117 axis2_transport_sender_t * transport_sender,
00118 const axutil_env_t * env);
00119
00120 };
00121
00127 struct axis2_transport_sender
00128 {
00129
00131 const axis2_transport_sender_ops_t *ops;
00132 };
00133
00139 AXIS2_EXTERN axis2_transport_sender_t *AXIS2_CALL
00140
00141 axis2_transport_sender_create(
00142 const axutil_env_t * env);
00143
00144
00145
00148 #define AXIS2_TRANSPORT_SENDER_FREE(transport_sender, env) \
00149 ((transport_sender->ops)->free (transport_sender, env))
00150
00153 #define AXIS2_TRANSPORT_SENDER_INIT(transport_sender, env, conf_context, transport_out) \
00154 ((transport_sender->ops)->init (transport_sender, env, conf_context, transport_out))
00155
00158 #define AXIS2_TRANSPORT_SENDER_INVOKE(transport_sender, env, msg_ctx) \
00159 ((transport_sender->ops)->invoke (transport_sender, env, msg_ctx))
00160
00163 #define AXIS2_TRANSPORT_SENDER_CLEANUP(transport_sender, env, msg_ctx) \
00164 ((transport_sender->ops)->cleanup (transport_sender, env, msg_ctx))
00165
00166
00167
00170 #ifdef __cplusplus
00171 }
00172 #endif
00173 #endif