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

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