/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef AXIS2_DISP_H #define AXIS2_DISP_H /** * @defgroup axis2_disp dispatcher * @ingroup axis2_engine * dispatcher is responsible for finding the service and operation for a given * invocation. A Web service request would contain information that help * locate the service and the operation serving the request. This information * could be in various formats, and hence the mechanism to find the requested * service and operation based on the available information could too vary. * Hence there can be various types on dispatches involved in a dispatching * phase of the engine, that implements the API given in this header. * @{ */ /** * @file axis2_disp.h */ #include #include #include #include #ifdef __cplusplus extern "C" { #endif #define AXIS2_DISP_NAMESPACE "http://axis.ws.apache.org" /** Type name for struct axis2_disp */ typedef struct axis2_disp axis2_disp_t; /** * Gets the base struct which is of type handler. * @param disp pointer to dispatcher * @param env pointer to environment struct * @return pointer to base handler struct. Returns a reference, not a * cloned copy */ AXIS2_EXTERN axis2_handler_t *AXIS2_CALL axis2_disp_get_base( const axis2_disp_t * disp, const axutil_env_t * env); /** * Gets the name of the dispatcher. * @param disp pointer to dispatcher * @param env pointer to environment struct * @return pointer to name. Returns a reference, not a * cloned copy */ AXIS2_EXTERN axutil_string_t *AXIS2_CALL axis2_disp_get_name( const axis2_disp_t * disp, const axutil_env_t * env); /** * Sets the name of the dispatcher. * @param disp pointer to dispatcher * @param env pointer to environment struct * @param name pointer to name, dispatcher assumes ownership of the * name struct * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE */ AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_disp_set_name( axis2_disp_t * disp, const axutil_env_t * env, axutil_string_t * name); /** * Frees dispatcher struct. * @param disp pointer to dispatcher * @param env pointer to environment struct * @return void */ AXIS2_EXTERN void AXIS2_CALL axis2_disp_free( axis2_disp_t * disp, const axutil_env_t * env); /** * Creates a dispatcher struct instance. * @param env pointer to environment struct * @param name pointer to QName. QName is cloned by create method. * @return pointer to newly created dispatcher */ AXIS2_EXTERN axis2_disp_t *AXIS2_CALL axis2_disp_create( const axutil_env_t * env, const axutil_string_t * name); axis2_status_t AXIS2_CALL axis2_disp_find_svc_and_op( struct axis2_handler *handler, const axutil_env_t * env, struct axis2_msg_ctx *msg_ctx); /** * Creates a WS-Addressing based dispatcher. * @param env pointer to environment struct * @return pointer to the newly created dispatcher with find_svc and find_op * methods implemented based on WS-Addressing */ AXIS2_EXTERN axis2_disp_t *AXIS2_CALL axis2_addr_disp_create( const axutil_env_t * env); /** * Creates a request URI based dispatcher. * @param env pointer to environment struct * @return pointer to the newly created dispatcher with find_svc and find_op * methods implemented based on request URI processing. */ AXIS2_EXTERN axis2_disp_t *AXIS2_CALL axis2_req_uri_disp_create( const axutil_env_t * env); /** * Creates a REST based dispatcher. * @param env pointer to environment struct * @return pointer to the newly created dispatcher with find_svc and find_op * methods implemented based on REST processing. */ AXIS2_EXTERN axis2_disp_t *AXIS2_CALL axis2_rest_disp_create( const axutil_env_t * env); /** * Creates a SOAP body based dispatcher. * @param env pointer to environment struct * @return pointer to the newly created dispatcher with find_svc and find_op * methods implemented based on SOAP body processing. */ AXIS2_EXTERN axis2_disp_t *AXIS2_CALL axis2_soap_body_disp_create( const axutil_env_t * env); /** * Creates a SOAP action based dispatcher. * @param env pointer to environment struct * @return pointer to the newly created dispatcher with find_svc and find_op * methods implemented based on SOAP action processing */ AXIS2_EXTERN axis2_disp_t *AXIS2_CALL axis2_soap_action_disp_create( const axutil_env_t * env); #ifdef __cplusplus } #endif #endif /* AXIS2_DISP_H */