00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef AXIS2_SVC_SKELETON_H
00020 #define AXIS2_SVC_SKELETON_H
00021
00041 #include <axiom_node.h>
00042 #include <axutil_array_list.h>
00043 #include <axis2_msg_ctx.h>
00044
00045 #ifdef __cplusplus
00046 extern "C"
00047 {
00048 #endif
00049
00051 typedef struct axis2_svc_skeleton_ops axis2_svc_skeleton_ops_t;
00052
00054 typedef struct axis2_svc_skeleton axis2_svc_skeleton_t;
00055
00060 struct axis2_svc_skeleton_ops
00061 {
00062
00069 int(
00070 AXIS2_CALL
00071 * init)(
00072 axis2_svc_skeleton_t * svc_skeleton,
00073 const axutil_env_t * env);
00074
00087 axiom_node_t *(
00088 AXIS2_CALL
00089 * invoke)(
00090 axis2_svc_skeleton_t * svc_skeli,
00091 const axutil_env_t * env,
00092 axiom_node_t * node,
00093 axis2_msg_ctx_t * msg_ctx);
00094
00102 axiom_node_t *(
00103 AXIS2_CALL
00104 * on_fault)(
00105 axis2_svc_skeleton_t * svc_skeli,
00106 const axutil_env_t * env,
00107 axiom_node_t * node);
00108
00115 int(
00116 AXIS2_CALL
00117 * free)(
00118 axis2_svc_skeleton_t * svc_skeli,
00119 const axutil_env_t * env);
00120
00128 int(
00129 AXIS2_CALL
00130 * init_with_conf)(
00131 axis2_svc_skeleton_t * svc_skeleton,
00132 const axutil_env_t * env,
00133 struct axis2_conf * conf);
00134 };
00135
00139 struct axis2_svc_skeleton
00140 {
00141
00143 const axis2_svc_skeleton_ops_t *ops;
00144
00146 axutil_array_list_t *func_array;
00147 };
00148
00149
00150
00153 #define AXIS2_SVC_SKELETON_INIT(svc_skeleton, env) \
00154 ((svc_skeleton)->ops->init (svc_skeleton, env))
00155
00158 #define AXIS2_SVC_SKELETON_INIT_WITH_CONF(svc_skeleton, env, conf) \
00159 ((svc_skeleton)->ops->init_with_conf (svc_skeleton, env, conf))
00160
00163 #define AXIS2_SVC_SKELETON_FREE(svc_skeleton, env) \
00164 ((svc_skeleton)->ops->free (svc_skeleton, env))
00165
00168 #define AXIS2_SVC_SKELETON_INVOKE(svc_skeleton, env, node, msg_ctx) \
00169 ((svc_skeleton)->ops->invoke (svc_skeleton, env, node, msg_ctx))
00170
00173 #define AXIS2_SVC_SKELETON_ON_FAULT(svc_skeleton, env, node) \
00174 ((svc_skeleton)->ops->on_fault (svc_skeleton, env, node))
00175
00178 #ifdef __cplusplus
00179 }
00180 #endif
00181
00182 #endif