axis2_svc_skeleton.h

Go to the documentation of this file.
00001 /*
00002 * Licensed to the Apache Software Foundation (ASF) under one or more
00003 * contributor license agreements.  See the NOTICE file distributed with
00004 * this work for additional information regarding copyright ownership.
00005 * The ASF licenses this file to You under the Apache License, Version 2.0
00006 * (the "License"); you may not use this file except in compliance with
00007 * the License.  You may obtain a copy of the License at
00008 *
00009 *      http://www.apache.org/licenses/LICENSE-2.0
00010 *
00011 * Unless required by applicable law or agreed to in writing, software
00012 * distributed under the License is distributed on an "AS IS" BASIS,
00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 * See the License for the specific language governing permissions and
00015 * limitations under the License.
00016 */
00017 
00018 #ifndef AXIS2_SVC_SKELETON_H
00019 #define AXIS2_SVC_SKELETON_H
00020 
00040 #include <axiom_node.h>
00041 #include <axis2_array_list.h>
00042 #include <axis2_msg_ctx.h>
00043 
00044 #ifdef __cplusplus
00045 extern "C"
00046 {
00047 #endif
00048 
00049 
00051     typedef struct axis2_svc_skeleton_ops axis2_svc_skeleton_ops_t;
00053     typedef struct axis2_svc_skeleton axis2_svc_skeleton_t;
00054    
00059     struct axis2_svc_skeleton_ops
00060     {
00061 
00068         int (AXIS2_CALL *
00069                 init)(
00070                     axis2_svc_skeleton_t *svc_skeleton,
00071                     const axis2_env_t *env);
00072 
00079         int (AXIS2_CALL *
00080                 free)(
00081                     axis2_svc_skeleton_t *svc_skeli,
00082                     const axis2_env_t *env);
00083 
00096         axiom_node_t *(AXIS2_CALL*
00097                 invoke)(
00098                     axis2_svc_skeleton_t *svc_skeli,
00099                     const axis2_env_t *env,
00100                     axiom_node_t *node,
00101                     axis2_msg_ctx_t *msg_ctx);
00102 
00110         axiom_node_t *(AXIS2_CALL*
00111                 on_fault)(
00112                     axis2_svc_skeleton_t *svc_skeli,
00113                     const axis2_env_t *env,
00114                     axiom_node_t *node);
00115 
00116 
00117     } ;
00118 
00122     struct axis2_svc_skeleton
00123     {
00125         axis2_svc_skeleton_ops_t *ops;
00127         axis2_array_list_t *func_array;
00128     };
00129 
00130 
00131 /*************************** Function macros **********************************/
00132 
00135 #define AXIS2_SVC_SKELETON_INIT(svc_skeleton, env) \
00136       ((svc_skeleton)->ops->init (svc_skeleton, env))
00137 
00140 #define AXIS2_SVC_SKELETON_FREE(svc_skeleton, env) \
00141       ((svc_skeleton)->ops->free (svc_skeleton, env))
00142 
00145 #define AXIS2_SVC_SKELETON_INVOKE(svc_skeleton, env, node, msg_ctx) \
00146       ((svc_skeleton)->ops->invoke (svc_skeleton, env, node, msg_ctx))
00147 
00150 #define AXIS2_SVC_SKELETON_ON_FAULT(svc_skeleton, env, node) \
00151       ((svc_skeleton)->ops->on_fault (svc_skeleton, env, node))
00152 
00155 #ifdef __cplusplus
00156 }
00157 #endif
00158 
00159 #endif /* AXIS2_SVC_SKELETON_H */

Generated on Wed Dec 20 20:34:50 2006 for Axis2/C by  doxygen 1.5.1