00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_SVC_GRP_CTX_H
00018 #define AXIS2_SVC_GRP_CTX_H
00019
00033 #include <axis2_defines.h>
00034 #include <axis2_env.h>
00035 #include <axis2_svc_ctx.h>
00036 #include <axis2_svc_grp.h>
00037
00038 #ifdef __cplusplus
00039 extern "C"
00040 {
00041 #endif
00042
00043 struct axis2_svc_grp;
00045 typedef struct axis2_svc_grp_ctx_ops axis2_svc_grp_ctx_ops_t;
00047 typedef struct axis2_svc_grp_ctx axis2_svc_grp_ctx_t;
00048
00049
00054 struct axis2_svc_grp_ctx_ops
00055 {
00063 axis2_ctx_t *(AXIS2_CALL *
00064 get_base)(
00065 const axis2_svc_grp_ctx_t *svc_grp_ctx,
00066 const axis2_env_t *env);
00067
00068
00076 struct axis2_conf_ctx *(AXIS2_CALL *
00077 get_parent)(
00078 const axis2_svc_grp_ctx_t *svc_grp_ctx,
00079 const axis2_env_t *env);
00080
00081
00088 axis2_status_t (AXIS2_CALL *
00089 free)(
00090 struct axis2_svc_grp_ctx *svc_grp_ctx,
00091 const axis2_env_t *env);
00092
00102 axis2_status_t (AXIS2_CALL *
00103 init)(
00104 struct axis2_svc_grp_ctx *svc_grp_ctx,
00105 const axis2_env_t *env,
00106 struct axis2_conf *conf);
00107
00114 const axis2_char_t *(AXIS2_CALL *
00115 get_id)(
00116 const axis2_svc_grp_ctx_t *svc_grp_ctx,
00117 const axis2_env_t *env);
00118
00126 axis2_status_t (AXIS2_CALL *
00127 set_id)(
00128 struct axis2_svc_grp_ctx *svc_grp_ctx,
00129 const axis2_env_t *env,
00130 const axis2_char_t *id);
00131
00139 struct axis2_svc_ctx *(AXIS2_CALL *
00140 get_svc_ctx)(
00141 const axis2_svc_grp_ctx_t *svc_grp_ctx,
00142 const axis2_env_t *env,
00143 const axis2_char_t *svc_name);
00144
00152 axis2_status_t (AXIS2_CALL *
00153 fill_svc_ctx_map)(
00154 struct axis2_svc_grp_ctx *svc_grp_ctx,
00155 const axis2_env_t *env);
00156
00164 struct axis2_svc_grp *(AXIS2_CALL *
00165 get_svc_grp)(
00166 const axis2_svc_grp_ctx_t *svc_grp_ctx,
00167 const axis2_env_t *env);
00168
00175 axis2_hash_t *(AXIS2_CALL *
00176 get_svc_ctx_map)(
00177 const axis2_svc_grp_ctx_t *svc_grp_ctx,
00178 const axis2_env_t *env);
00179 };
00180
00184 struct axis2_svc_grp_ctx
00185 {
00187 axis2_svc_grp_ctx_ops_t *ops;
00188 };
00189
00190
00201 AXIS2_EXTERN axis2_svc_grp_ctx_t *AXIS2_CALL
00202 axis2_svc_grp_ctx_create(
00203 const axis2_env_t *env,
00204 struct axis2_svc_grp *svc_grp,
00205 struct axis2_conf_ctx *conf_ctx);
00206
00207
00210 #define AXIS2_SVC_GRP_CTX_GET_BASE(svc_grp_ctx, env) \
00211 ((svc_grp_ctx)->ops->get_base(svc_grp_ctx, env))
00212
00215 #define AXIS2_SVC_GRP_CTX_GET_PARENT(svc_grp_ctx, env) \
00216 ((svc_grp_ctx)->ops->get_parent(svc_grp_ctx, env))
00217
00220 #define AXIS2_SVC_GRP_CTX_FREE(svc_grp_ctx, env)\
00221 ((svc_grp_ctx)->ops->free(svc_grp_ctx, env))
00222
00225 #define AXIS2_SVC_GRP_CTX_INIT(svc_grp_ctx, env, conf)\
00226 ((svc_grp_ctx)->ops->init(svc_grp_ctx, env, conf))
00227
00230 #define AXIS2_SVC_GRP_CTX_GET_ID(svc_grp_ctx, env) \
00231 ((svc_grp_ctx)->ops->get_id(svc_grp_ctx, env))
00232
00235 #define AXIS2_SVC_GRP_CTX_SET_ID(svc_grp_ctx, env, id) \
00236 ((svc_grp_ctx)->ops->set_id(svc_grp_ctx, env, id))
00237
00240 #define AXIS2_SVC_GRP_CTX_GET_SVC_CTX(svc_grp_ctx, env, svc_name) \
00241 ((svc_grp_ctx)->ops->get_svc_ctx(svc_grp_ctx, env, svc_name))
00242
00245 #define AXIS2_SVC_GRP_CTX_FILL_SVC_CTX_MAP(svc_grp_ctx, env) \
00246 ((svc_grp_ctx)->ops->fill_svc_ctx_map(svc_grp_ctx, env))
00247
00250 #define AXIS2_SVC_GRP_GET_SVC_GRP(svc_grp_ctx, env) \
00251 ((svc_grp_ctx)->ops->get_svc_grp(svc_grp_ctx, env))
00252
00255 #define AXIS2_SVC_GRP_GET_SVC_CTX_MAP(svc_grp_ctx, env) \
00256 ((svc_grp_ctx)->ops->get_svc_ctx_map(svc_grp_ctx, env))
00257
00259 #ifdef __cplusplus
00260 }
00261 #endif
00262
00263 #endif