00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_DISP_H
00018 #define AXIS2_DISP_H
00019
00037 #include <axis2_defines.h>
00038 #include <axis2_qname.h>
00039 #include <axis2_handler.h>
00040 #include <axis2_svc.h>
00041
00042 #ifdef __cplusplus
00043 extern "C"
00044 {
00045 #endif
00046
00048 typedef struct axis2_disp axis2_disp_t;
00050 typedef struct axis2_disp_ops axis2_disp_ops_t;
00051
00056 struct axis2_disp_ops
00057 {
00065 axis2_handler_t *(AXIS2_CALL *
00066 get_base)(
00067 const axis2_disp_t *disp,
00068 const axis2_env_t *env);
00069
00077 axis2_qname_t *(AXIS2_CALL *
00078 get_qname)(
00079 const axis2_disp_t *disp,
00080 const axis2_env_t *env);
00081
00090 axis2_status_t (AXIS2_CALL *
00091 set_qname)(
00092 axis2_disp_t *disp,
00093 const axis2_env_t *env,
00094 axis2_qname_t *qname);
00095
00102 axis2_status_t (AXIS2_CALL *
00103 free)(
00104 axis2_disp_t *disp,
00105 const axis2_env_t *env);
00115 axis2_svc_t *(AXIS2_CALL *
00116 find_svc)(
00117 axis2_msg_ctx_t *msg_ctx,
00118 const axis2_env_t *env);
00131 axis2_op_t *(AXIS2_CALL *
00132 find_op)(
00133 axis2_msg_ctx_t *msg_ctx,
00134 const axis2_env_t *env,
00135 const axis2_svc_t *svc);
00136
00137 };
00138
00142 struct axis2_disp
00143 {
00145 axis2_disp_ops_t *ops;
00146 };
00147
00148
00155 AXIS2_EXTERN axis2_disp_t *AXIS2_CALL
00156 axis2_disp_create(
00157 const axis2_env_t *env,
00158 const axis2_qname_t *qname);
00159
00168 axis2_status_t AXIS2_CALL
00169 axis2_disp_invoke(
00170 axis2_handler_t *handler,
00171 const axis2_env_t *env,
00172 axis2_msg_ctx_t *msg_ctx);
00173
00180 axis2_disp_t *AXIS2_CALL
00181 axis2_addr_disp_create(
00182 const axis2_env_t *env);
00183
00190 axis2_disp_t *AXIS2_CALL
00191 axis2_req_uri_disp_create(
00192 const axis2_env_t *env);
00193
00200 axis2_disp_t *AXIS2_CALL
00201 axiom_soap_body_disp_create(
00202 const axis2_env_t *env);
00203
00210 axis2_disp_t *AXIS2_CALL
00211 axiom_soap_action_disp_create(
00212 const axis2_env_t *env);
00213
00214
00217 #define AXIS2_DISP_GET_BASE(disp, env) \
00218 ((disp)->ops->get_base(disp, env))
00219
00222 #define AXIS2_DISP_GET_QNAME(disp, env) \
00223 ((disp)->ops->get_qname(disp, env))
00224
00227 #define AXIS2_DISP_SET_QNAME(disp, env, name) \
00228 ((disp)->ops->set_qname(disp, env, name))
00229
00232 #define AXIS2_DISP_FREE(disp, env) \
00233 ((disp)->ops->free(disp, env))
00234
00237 #define AXIS2_DISP_FIND_SVC(msg_ctx, env) \
00238 ((msg_ctx)->ops->find_svc(msg_ctx, env))
00239
00242 #define AXIS2_DISP_FIND_OP(msg_ctx, env, svc) \
00243 ((msg_ctx)->ops->find_op(msg_ctx, env, svc))
00244
00247 #ifdef __cplusplus
00248 }
00249 #endif
00250
00251 #endif