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
00025 #include <axis2_defines.h>
00026 #include <axis2_qname.h>
00027 #include <axis2_handler.h>
00028 #include <axis2_svc.h>
00029
00030 #ifdef __cplusplus
00031 extern "C"
00032 {
00033 #endif
00034 struct axis2_op;
00035 struct axis2_svc;
00036 struct axis2_disp;
00037 struct axis2_disp_ops;
00038
00048 AXIS2_DECLARE_DATA typedef struct axis2_disp_ops
00049 {
00050 axis2_handler_t* (AXIS2_CALL *get_base) (struct axis2_disp *disp,
00051 const axis2_env_t *env);
00052 axis2_qname_t* (AXIS2_CALL *get_qname) (struct axis2_disp *disp,
00053 const axis2_env_t *env);
00054 axis2_status_t (AXIS2_CALL *set_qname) (struct axis2_disp *disp,
00055 const axis2_env_t *env, axis2_qname_t *qname);
00056 axis2_status_t (AXIS2_CALL *free) (struct axis2_disp *disp,
00057 const axis2_env_t *env);
00064 struct axis2_svc* (AXIS2_CALL *find_svc)(axis2_msg_ctx_t *msg_ctx,
00065 const axis2_env_t *env);
00073 struct axis2_op *(AXIS2_CALL *find_op)(axis2_msg_ctx_t *msg_ctx,
00074 const axis2_env_t *env,
00075 struct axis2_svc *svc);
00076
00077 } axis2_disp_ops_t;
00078
00082 typedef struct axis2_disp
00083 {
00085 axis2_disp_ops_t *ops;
00086 } axis2_disp_t;
00087
00088
00093 AXIS2_EXTERN axis2_disp_t *AXIS2_CALL axis2_disp_create(const axis2_env_t *env, axis2_qname_t *qname);
00094
00095 #define AXIS2_DISP_GET_BASE(disp, env) ((disp)->ops->get_base(disp, env))
00096 #define AXIS2_DISP_GET_QNAME(disp, env) ((disp)->ops->get_qname(disp, env))
00097 #define AXIS2_DISP_SET_QNAME(disp, env, name) ((disp)->ops->set_qname(disp, env, name))
00098 #define AXIS2_DISP_FREE(disp, env) ((disp)->ops->free(disp, env))
00099 #define AXIS2_DISP_FIND_SVC(msg_ctx, env) ((msg_ctx)->ops->find_svc(msg_ctx, env))
00100 #define AXIS2_DISP_FIND_OP(msg_ctx, env, svc) ((msg_ctx)->ops->find_op(msg_ctx, env, svc))
00101
00102 axis2_status_t AXIS2_CALL axis2_disp_invoke(struct axis2_handler * handler,
00103 const axis2_env_t *env,
00104 struct axis2_msg_ctx *msg_ctx);
00105
00106 axis2_disp_t* AXIS2_CALL axis2_addr_disp_create(const axis2_env_t *env);
00107 axis2_disp_t* AXIS2_CALL axis2_req_uri_disp_create(const axis2_env_t *env);
00108 axis2_disp_t* AXIS2_CALL axiom_soap_body_disp_create(const axis2_env_t *env);
00109 axis2_disp_t* AXIS2_CALL axiom_soap_action_disp_create(const axis2_env_t *env);
00110
00113 #ifdef __cplusplus
00114 }
00115 #endif
00116
00117 #endif