# 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 */