# axis2_svc_skeleton.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_SVC_SKELETON_H
    00020 #define AXIS2_SVC_SKELETON_H
    00021
    00041 #include <axiom_node.h>
    00042 #include <axutil_array_list.h>
    00043 #include <axis2_msg_ctx.h>
    00044
    00045 #ifdef __cplusplus
    00046 extern "C"
    00047 {
    00048 #endif
    00049
    00051     typedef struct axis2_svc_skeleton_ops axis2_svc_skeleton_ops_t;
    00052
    00054     typedef struct axis2_svc_skeleton axis2_svc_skeleton_t;
    00055
    00060     struct axis2_svc_skeleton_ops
    00061     {
    00062
    00069         int(
    00070             AXIS2_CALL
    00071             * init)(
    00072                 axis2_svc_skeleton_t * svc_skeleton,
    00073                 const axutil_env_t * env);
    00074
    00087         axiom_node_t *(
    00088             AXIS2_CALL
    00089             * invoke)(
    00090                 axis2_svc_skeleton_t * svc_skeli,
    00091                 const axutil_env_t * env,
    00092                 axiom_node_t * node,
    00093                 axis2_msg_ctx_t * msg_ctx);
    00094
    00102         axiom_node_t *(
    00103             AXIS2_CALL
    00104             * on_fault)(
    00105                 axis2_svc_skeleton_t * svc_skeli,
    00106                 const axutil_env_t * env,
    00107                 axiom_node_t * node);
    00108
    00115         int(
    00116             AXIS2_CALL
    00117             * free)(
    00118                 axis2_svc_skeleton_t * svc_skeli,
    00119                 const axutil_env_t * env);
    00120
    00128         int(
    00129             AXIS2_CALL
    00130             * init_with_conf)(
    00131                 axis2_svc_skeleton_t * svc_skeleton,
    00132                 const axutil_env_t * env,
    00133                 struct axis2_conf * conf);
    00134     };
    00135
    00139     struct axis2_svc_skeleton
    00140     {
    00141
    00143         const axis2_svc_skeleton_ops_t *ops;
    00144
    00146         axutil_array_list_t *func_array;
    00147     };
    00148
    00149     /*************************** Function macros **********************************/
    00150
    00153 #define AXIS2_SVC_SKELETON_INIT(svc_skeleton, env) \
    00154       ((svc_skeleton)->ops->init (svc_skeleton, env))
    00155
    00158 #define AXIS2_SVC_SKELETON_INIT_WITH_CONF(svc_skeleton, env, conf) \
    00159       ((svc_skeleton)->ops->init_with_conf (svc_skeleton, env, conf))
    00160
    00163 #define AXIS2_SVC_SKELETON_FREE(svc_skeleton, env) \
    00164       ((svc_skeleton)->ops->free (svc_skeleton, env))
    00165
    00168 #define AXIS2_SVC_SKELETON_INVOKE(svc_skeleton, env, node, msg_ctx) \
    00169       ((svc_skeleton)->ops->invoke (svc_skeleton, env, node, msg_ctx))
    00170
    00173 #define AXIS2_SVC_SKELETON_ON_FAULT(svc_skeleton, env, node) \
    00174       ((svc_skeleton)->ops->on_fault (svc_skeleton, env, node))
    00175
    00178 #ifdef __cplusplus
    00179 }
    00180 #endif
    00181
    00182 #endif                          /* AXIS2_SVC_SKELETON_H */