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
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
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