00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_CONF_CTX_H
00018 #define AXIS2_CONF_CTX_H
00019
00035 #include <axis2_defines.h>
00036 #include <axis2_hash.h>
00037 #include <axis2_env.h>
00038 #include <axis2_ctx.h>
00039 #include <axis2_svc_grp_ctx.h>
00040
00041 #ifdef __cplusplus
00042 extern "C"
00043 {
00044 #endif
00045
00046
00048 typedef struct axis2_conf_ctx_ops axis2_conf_ctx_ops_t;
00050 typedef struct axis2_conf_ctx axis2_conf_ctx_t;
00051 struct axis2_conf;
00052
00057 struct axis2_conf_ctx_ops
00058 {
00066 axis2_status_t (AXIS2_CALL *
00067 set_conf)(
00068 axis2_conf_ctx_t *conf_ctx,
00069 const axis2_env_t *env,
00070 struct axis2_conf *conf);
00078 axis2_ctx_t *(AXIS2_CALL *
00079 get_base)(
00080 const axis2_conf_ctx_t *conf_ctx,
00081 const axis2_env_t *env);
00082
00090 axis2_conf_t *(AXIS2_CALL *
00091 get_conf)(
00092 const axis2_conf_ctx_t *conf_ctx,
00093 const axis2_env_t *env);
00094
00101 axis2_hash_t *(AXIS2_CALL *
00102 get_op_ctx_map)(
00103 const axis2_conf_ctx_t *conf_ctx,
00104 const axis2_env_t *env);
00105
00112 axis2_hash_t *(AXIS2_CALL *
00113 get_svc_ctx_map)(
00114 const axis2_conf_ctx_t *conf_ctx,
00115 const axis2_env_t *env);
00116
00123 axis2_hash_t *(AXIS2_CALL *
00124 get_svc_grp_ctx_map)(
00125 const axis2_conf_ctx_t *conf_ctx,
00126 const axis2_env_t *env);
00127
00137 axis2_status_t (AXIS2_CALL *
00138 register_op_ctx)(
00139 axis2_conf_ctx_t *conf_ctx,
00140 const axis2_env_t *env,
00141 const axis2_char_t *message_id,
00142 axis2_op_ctx_t *op_ctx);
00143
00151 axis2_op_ctx_t *(AXIS2_CALL *
00152 get_op_ctx)(
00153 const axis2_conf_ctx_t *conf_ctx,
00154 const axis2_env_t *env,
00155 const axis2_char_t *message_id);
00156
00165 axis2_status_t (AXIS2_CALL *
00166 register_svc_ctx)(
00167 axis2_conf_ctx_t *conf_ctx,
00168 const axis2_env_t *env,
00169 const axis2_char_t *svc_id,
00170 axis2_svc_ctx_t *svc_ctx);
00171
00179 struct axis2_svc_ctx *(AXIS2_CALL *
00180 get_svc_ctx)(
00181 const axis2_conf_ctx_t *conf_ctx,
00182 const axis2_env_t *env,
00183 const axis2_char_t *svc_id);
00184
00193 axis2_status_t (AXIS2_CALL *
00194 register_svc_grp_ctx)(
00195 axis2_conf_ctx_t *conf_ctx,
00196 const axis2_env_t *env,
00197 const axis2_char_t *svc_grp_id,
00198 axis2_svc_grp_ctx_t *svc_grp_ctx);
00199
00207 axis2_svc_grp_ctx_t *(AXIS2_CALL *
00208 get_svc_grp_ctx)(
00209 const axis2_conf_ctx_t *conf_ctx,
00210 const axis2_env_t *env,
00211 const axis2_char_t *svc_grp_id);
00212
00221 const axis2_char_t *(AXIS2_CALL *
00222 get_root_dir)(
00223 const axis2_conf_ctx_t *conf_ctx,
00224 const axis2_env_t *env);
00225
00235 axis2_status_t (AXIS2_CALL *
00236 set_root_dir)(
00237 axis2_conf_ctx_t *conf_ctx,
00238 const axis2_env_t *env,
00239 const axis2_char_t *path);
00240
00250 axis2_status_t (AXIS2_CALL *
00251 init)(
00252 axis2_conf_ctx_t *conf_ctx,
00253 const axis2_env_t *env,
00254 axis2_conf_t *conf);
00255
00262 axis2_status_t (AXIS2_CALL *
00263 free)(
00264 axis2_conf_ctx_t *conf_ctx,
00265 const axis2_env_t *env);
00266
00279 axis2_svc_grp_ctx_t *(AXIS2_CALL *
00280 fill_ctxs)(
00281 axis2_conf_ctx_t *conf_ctx,
00282 const axis2_env_t *env,
00283 axis2_msg_ctx_t *msg_ctx);
00284 };
00285
00289 struct axis2_conf_ctx
00290 {
00292 axis2_conf_ctx_ops_t *ops;
00293 };
00294
00302 AXIS2_EXTERN axis2_conf_ctx_t *AXIS2_CALL
00303 axis2_conf_ctx_create(
00304 const axis2_env_t *env,
00305 struct axis2_conf *conf);
00306
00309 #define AXIS2_CONF_CTX_SET_CONF(conf_ctx, env, conf) \
00310 ((conf_ctx)->ops->set_conf(conf_ctx, env, conf))
00311
00314 #define AXIS2_CONF_CTX_GET_BASE(conf_ctx, env) \
00315 ((conf_ctx)->ops->get_base(conf_ctx, env))
00316
00319 #define AXIS2_CONF_CTX_GET_CONF(conf_ctx, env) \
00320 ((conf_ctx)->ops->get_conf(conf_ctx, env))
00321
00324 #define AXIS2_CONF_CTX_GET_OP_CTX_MAP(conf_ctx, env) \
00325 ((conf_ctx)->ops->get_op_ctx_map(conf_ctx, env))
00326
00329 #define AXIS2_CONF_CTX_GET_SVC_CTX_MAP(conf_ctx, env) \
00330 ((conf_ctx)->ops->get_svc_ctx_map(conf_ctx, env))
00331
00334 #define AXIS2_CONF_CTX_GET_SVC_GRP_CTX_MAP(conf_ctx, env) \
00335 ((conf_ctx)->ops->get_svc_grp_ctx_map(conf_ctx, env))
00336
00339 #define AXIS2_CONF_CTX_REGISTER_OP_CTX(conf_ctx, env, message_id, op_ctx) \
00340 ((conf_ctx)->ops->register_op_ctx(conf_ctx, env, message_id, op_ctx))
00341
00344 #define AXIS2_CONF_CTX_GET_OP_CTX(conf_ctx, env, message_id) \
00345 ((conf_ctx)->ops->get_op_ctx(conf_ctx, env, message_id))
00346
00349 #define AXIS2_CONF_CTX_REGISTER_SVC_CTX(conf_ctx, env, svc_id, svc_ctx) \
00350 ((conf_ctx)->ops->register_svc_ctx(conf_ctx, env, svc_id, svc_ctx))
00351
00354 #define AXIS2_CONF_CTX_GET_SVC_CTX(conf_ctx, env, svc_id) \
00355 ((conf_ctx)->ops->get_svc_ctx(conf_ctx, env, svc_id))
00356
00359 #define AXIS2_CONF_CTX_REGISTER_SVC_GRP_CTX(conf_ctx, env, svc_grp_id, svc_grp_ctx) \
00360 ((conf_ctx)->ops->register_svc_grp_ctx(conf_ctx, env, svc_grp_id, svc_grp_ctx))
00361
00364 #define AXIS2_CONF_CTX_GET_SVC_GRP_CTX(conf_ctx, env, svc_grp_id) \
00365 ((conf_ctx)->ops->get_svc_grp_ctx(conf_ctx, env, svc_grp_id))
00366
00369 #define AXIS2_CONF_CTX_GET_ROOT_DIR(conf_ctx, env) \
00370 ((conf_ctx)->ops->get_root_dir(conf_ctx, env))
00371
00374 #define AXIS2_CONF_CTX_SET_ROOT_DIR(conf_ctx, env, path) \
00375 ((conf_ctx)->ops->set_root_dir(conf_ctx, env, path))
00376
00379 #define AXIS2_CONF_CTX_INIT(conf_ctx, env, conf) \
00380 ((conf_ctx)->ops->init(conf_ctx, env, conf))
00381
00384 #define AXIS2_CONF_CTX_FREE(conf_ctx, env) \
00385 ((conf_ctx)->ops->free(conf_ctx, env))
00386
00390 #define AXIS2_CONF_CTX_FILL_CTXS(conf_ctx, env, msg_ctx) \
00391 ((conf_ctx)->ops->fill_ctxs(conf_ctx, env, msg_ctx))
00392
00394 #ifdef __cplusplus
00395 }
00396 #endif
00397
00398 #endif