Main Page | Modules | Class List | Directories | File List | Class Members | File Members | Examples

axis2_svc_skeleton.h

Go to the documentation of this file.
00001 /*
00002  * Copyright 2004,2005 The Apache Software Foundation.
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *      http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016   
00017 #ifndef AXIS2_SVC_SKELETON_H
00018 #define AXIS2_SVC_SKELETON_H
00019 
00020 #include <axiom_node.h>
00021 #include <axis2_array_list.h>
00022 #include <axis2_msg_ctx.h>
00023 
00024 #ifdef __cplusplus
00025 extern "C"
00026 {
00027 #endif
00028     
00040 typedef struct axis2_svc_skeleton_ops axis2_svc_skeleton_ops_t;   
00041 typedef struct axis2_svc_skeleton axis2_svc_skeleton_t;
00042   
00043 AXIS2_DECLARE_DATA struct axis2_svc_skeleton_ops
00044 {
00045     int (AXIS2_CALL *
00046     init) (axis2_svc_skeleton_t *svc_skeleton,
00047             const axis2_env_t *env);
00048 
00049     int (AXIS2_CALL * 
00050     free)(axis2_svc_skeleton_t *svc_skeli,
00051             const axis2_env_t *env);
00052     
00053     int (AXIS2_CALL * 
00054     free_void_arg)(void *svc_skeli,
00055           const axis2_env_t *env);
00056     
00057     axiom_node_t *(AXIS2_CALL* 
00058     invoke)(axis2_svc_skeleton_t *svc_skeli, 
00059             const axis2_env_t *env,
00060             axiom_node_t *node,
00061             axis2_msg_ctx_t *msg_ctx);
00062     
00063     axiom_node_t *(AXIS2_CALL* 
00064     on_fault)(axis2_svc_skeleton_t *svc_skeli, 
00065                 const axis2_env_t *env,
00066                 axiom_node_t *node);
00067     
00068 
00069 } ;
00070 
00071 AXIS2_DECLARE_DATA struct axis2_svc_skeleton 
00072 {
00073     axis2_svc_skeleton_ops_t *ops; 
00074     axis2_array_list_t *func_array;
00075 };
00076 
00081 AXIS2_EXTERN axis2_svc_skeleton_t * AXIS2_CALL 
00082 axis2_svc_skeleton_create (const axis2_env_t *env);
00083 
00084 /*************************** Function macros **********************************/
00085 
00086 #define AXIS2_SVC_SKELETON_INIT(svc_skeleton, env) \
00087       ((svc_skeleton)->ops->init (svc_skeleton, env))
00088 
00089 #define AXIS2_SVC_SKELETON_FREE(svc_skeleton, env) \
00090       ((svc_skeleton)->ops->free (svc_skeleton, env))
00091 
00092 #define AXIS2_SVC_SKELETON_INVOKE(svc_skeleton, env, node, msg_ctx) \
00093       ((svc_skeleton)->ops->invoke (svc_skeleton, env, node, msg_ctx))
00094 
00095 #define AXIS2_SVC_SKELETON_ON_FAULT(svc_skeleton, env, node) \
00096       ((svc_skeleton)->ops->on_fault (svc_skeleton, env, node))
00097 
00098 
00101 #ifdef __cplusplus
00102 }
00103 #endif
00104 
00105 #endif /* AXIS2_SVC_SKELETON_H */

Generated on Fri Jun 16 18:02:31 2006 for Axis2/C by  doxygen 1.4.2