00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef AXIS2_SVC_SKELETON_H
00019 #define AXIS2_SVC_SKELETON_H
00020
00040 #include <axiom_node.h>
00041 #include <axutil_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 axutil_env_t *env);
00072
00085 axiom_node_t *(AXIS2_CALL*
00086 invoke)(
00087 axis2_svc_skeleton_t *svc_skeli,
00088 const axutil_env_t *env,
00089 axiom_node_t *node,
00090 axis2_msg_ctx_t *msg_ctx);
00091
00099 axiom_node_t *(AXIS2_CALL*
00100 on_fault)(
00101 axis2_svc_skeleton_t *svc_skeli,
00102 const axutil_env_t *env,
00103 axiom_node_t *node);
00104
00111 int (AXIS2_CALL *
00112 free)(
00113 axis2_svc_skeleton_t *svc_skeli,
00114 const axutil_env_t *env);
00115
00116 } ;
00117
00121 struct axis2_svc_skeleton
00122 {
00124 const axis2_svc_skeleton_ops_t *ops;
00126 axutil_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