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
00059 AXIS2_DECLARE_DATA struct axis2_svc_skeleton_ops
00060 {
00061
00062
00063
00064
00065
00066 int (AXIS2_CALL *
00067 init)(
00068 axis2_svc_skeleton_t *svc_skeleton,
00069 const axis2_env_t *env);
00070
00071
00072
00073
00074
00075 int (AXIS2_CALL *
00076 free)(
00077 axis2_svc_skeleton_t *svc_skeli,
00078 const axis2_env_t *env);
00079
00080
00081
00082
00083
00084 int (AXIS2_CALL *
00085 free_void_arg)(
00086 void *svc_skeli,
00087 const axis2_env_t *env);
00088
00089
00090
00091
00092
00093
00094
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
00102
00103
00104
00105
00106
00107 axiom_node_t *(AXIS2_CALL*
00108 on_fault)(
00109 axis2_svc_skeleton_t *svc_skeli,
00110 const axis2_env_t *env,
00111 axiom_node_t *node);
00112
00113
00114 } ;
00115
00122 AXIS2_DECLARE_DATA struct axis2_svc_skeleton
00123 {
00124 axis2_svc_skeleton_ops_t *ops;
00125 axis2_array_list_t *func_array;
00126 };
00127
00133 AXIS2_EXTERN axis2_svc_skeleton_t * AXIS2_CALL
00134 axis2_svc_skeleton_create (const axis2_env_t *env);
00135
00136
00137
00140 #define AXIS2_SVC_SKELETON_INIT(svc_skeleton, env) \
00141 ((svc_skeleton)->ops->init (svc_skeleton, env))
00142
00145 #define AXIS2_SVC_SKELETON_FREE(svc_skeleton, env) \
00146 ((svc_skeleton)->ops->free (svc_skeleton, env))
00147
00150 #define AXIS2_SVC_SKELETON_INVOKE(svc_skeleton, env, node, msg_ctx) \
00151 ((svc_skeleton)->ops->invoke (svc_skeleton, env, node, msg_ctx))
00152
00155 #define AXIS2_SVC_SKELETON_ON_FAULT(svc_skeleton, env, node) \
00156 ((svc_skeleton)->ops->on_fault (svc_skeleton, env, node))
00157
00160 #ifdef __cplusplus
00161 }
00162 #endif
00163
00164 #endif