00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef AXIS2_DISP_H
00019 #define AXIS2_DISP_H
00020
00038 #include <axis2_defines.h>
00039 #include <axis2_qname.h>
00040 #include <axis2_handler.h>
00041 #include <axis2_svc.h>
00042
00043 #ifdef __cplusplus
00044 extern "C"
00045 {
00046 #endif
00047
00048 #define AXIS2_DISP_NAMESPACE "http://axis.ws.apache.org"
00049
00051 typedef struct axis2_disp axis2_disp_t;
00053 typedef struct axis2_disp_ops axis2_disp_ops_t;
00054
00059 struct axis2_disp_ops
00060 {
00068 axis2_handler_t *(AXIS2_CALL *
00069 get_base)(
00070 const axis2_disp_t *disp,
00071 const axis2_env_t *env);
00072
00080 axis2_qname_t *(AXIS2_CALL *
00081 get_qname)(
00082 const axis2_disp_t *disp,
00083 const axis2_env_t *env);
00084
00093 axis2_status_t (AXIS2_CALL *
00094 set_qname)(
00095 axis2_disp_t *disp,
00096 const axis2_env_t *env,
00097 axis2_qname_t *qname);
00098
00105 axis2_status_t (AXIS2_CALL *
00106 free)(
00107 axis2_disp_t *disp,
00108 const axis2_env_t *env);
00118 axis2_svc_t *(AXIS2_CALL *
00119 find_svc)(
00120 axis2_msg_ctx_t *msg_ctx,
00121 const axis2_env_t *env);
00134 axis2_op_t *(AXIS2_CALL *
00135 find_op)(
00136 axis2_msg_ctx_t *msg_ctx,
00137 const axis2_env_t *env,
00138 const axis2_svc_t *svc);
00139
00140 };
00141
00145 struct axis2_disp
00146 {
00148 axis2_disp_ops_t *ops;
00149 };
00150
00151
00158 AXIS2_EXTERN axis2_disp_t *AXIS2_CALL
00159 axis2_disp_create(
00160 const axis2_env_t *env,
00161 const axis2_qname_t *qname);
00162
00171 axis2_status_t AXIS2_CALL
00172 axis2_disp_invoke(
00173 axis2_handler_t *handler,
00174 const axis2_env_t *env,
00175 axis2_msg_ctx_t *msg_ctx);
00176
00183 axis2_disp_t *AXIS2_CALL
00184 axis2_addr_disp_create(
00185 const axis2_env_t *env);
00186
00193 axis2_disp_t *AXIS2_CALL
00194 axis2_req_uri_disp_create(
00195 const axis2_env_t *env);
00196
00203 axis2_disp_t *AXIS2_CALL
00204 axiom_soap_body_disp_create(
00205 const axis2_env_t *env);
00206
00213 axis2_disp_t *AXIS2_CALL
00214 axiom_soap_action_disp_create(
00215 const axis2_env_t *env);
00216
00217
00220 #define AXIS2_DISP_GET_BASE(disp, env) \
00221 ((disp)->ops->get_base(disp, env))
00222
00225 #define AXIS2_DISP_GET_QNAME(disp, env) \
00226 ((disp)->ops->get_qname(disp, env))
00227
00230 #define AXIS2_DISP_SET_QNAME(disp, env, name) \
00231 ((disp)->ops->set_qname(disp, env, name))
00232
00235 #define AXIS2_DISP_FREE(disp, env) \
00236 ((disp)->ops->free(disp, env))
00237
00240 #define AXIS2_DISP_FIND_SVC(msg_ctx, env) \
00241 ((msg_ctx)->ops->find_svc(msg_ctx, env))
00242
00245 #define AXIS2_DISP_FIND_OP(msg_ctx, env, svc) \
00246 ((msg_ctx)->ops->find_op(msg_ctx, env, svc))
00247
00250 #ifdef __cplusplus
00251 }
00252 #endif
00253
00254 #endif