axis2_transport_sender.h

Go to the documentation of this file.
00001 
00002 /*
00003 * Licensed to the Apache Software Foundation (ASF) under one or more
00004 * contributor license agreements.  See the NOTICE file distributed with
00005 * this work for additional information regarding copyright ownership.
00006 * The ASF licenses this file to You under the Apache License, Version 2.0
00007 * (the "License"); you may not use this file except in compliance with
00008 * the License.  You may obtain a copy of the License at
00009 *
00010 *      http://www.apache.org/licenses/LICENSE-2.0
00011 *
00012 * Unless required by applicable law or agreed to in writing, software
00013 * distributed under the License is distributed on an "AS IS" BASIS,
00014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015 * See the License for the specific language governing permissions and
00016 * limitations under the License.
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     /*************************** Function macros **********************************/
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     /*************************** End of function macros ***************************/
00167 
00170 #ifdef __cplusplus
00171 }
00172 #endif
00173 #endif                          /* AXIS2_TRANSPORT_SENDER_H */

Generated on Fri Apr 17 11:49:42 2009 for Axis2/C by  doxygen 1.5.3