00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_SVC_SKELETON_H
00018 #define AXIS2_SVC_SKELETON_H
00019
00039 #include <axiom_node.h>
00040 #include <axis2_array_list.h>
00041 #include <axis2_msg_ctx.h>
00042
00043 #ifdef __cplusplus
00044 extern "C"
00045 {
00046 #endif
00047
00048
00050 typedef struct axis2_svc_skeleton_ops axis2_svc_skeleton_ops_t;
00052 typedef struct axis2_svc_skeleton axis2_svc_skeleton_t;
00053
00058 struct axis2_svc_skeleton_ops
00059 {
00060
00067 int (AXIS2_CALL *
00068 init)(
00069 axis2_svc_skeleton_t *svc_skeleton,
00070 const axis2_env_t *env);
00071
00078 int (AXIS2_CALL *
00079 free)(
00080 axis2_svc_skeleton_t *svc_skeli,
00081 const axis2_env_t *env);
00082
00095 axiom_node_t *(AXIS2_CALL*
00096 invoke)(
00097 axis2_svc_skeleton_t *svc_skeli,
00098 const axis2_env_t *env,
00099 axiom_node_t *node,
00100 axis2_msg_ctx_t *msg_ctx);
00101
00109 axiom_node_t *(AXIS2_CALL*
00110 on_fault)(
00111 axis2_svc_skeleton_t *svc_skeli,
00112 const axis2_env_t *env,
00113 axiom_node_t *node);
00114
00115
00116 } ;
00117
00121 struct axis2_svc_skeleton
00122 {
00124 axis2_svc_skeleton_ops_t *ops;
00126 axis2_array_list_t *func_array;
00127 };
00128
00129
00130
00131
00134 #define AXIS2_SVC_SKELETON_INIT(svc_skeleton, env) \
00135 ((svc_skeleton)->ops->init (svc_skeleton, env))
00136
00139 #define AXIS2_SVC_SKELETON_FREE(svc_skeleton, env) \
00140 ((svc_skeleton)->ops->free (svc_skeleton, env))
00141
00144 #define AXIS2_SVC_SKELETON_INVOKE(svc_skeleton, env, node, msg_ctx) \
00145 ((svc_skeleton)->ops->invoke (svc_skeleton, env, node, msg_ctx))
00146
00149 #define AXIS2_SVC_SKELETON_ON_FAULT(svc_skeleton, env, node) \
00150 ((svc_skeleton)->ops->on_fault (svc_skeleton, env, node))
00151
00154 #ifdef __cplusplus
00155 }
00156 #endif
00157
00158 #endif