| /* |
| * Copyright 2004,2005 The Apache Software Foundation. |
| * |
| * Licensed 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_HANDLER_H |
| #define AXIS2_HANDLER_H |
| |
| /** |
| * @file axis2_handler.h |
| * @brief Axis2 handler interface |
| */ |
| |
| #include <axis2_defines.h> |
| #include <axis2_qname.h> |
| #include <axis2_param.h> |
| |
| #ifdef __cplusplus |
| extern "C" |
| { |
| #endif |
| |
| struct axis2_handler; |
| struct axis2_handler_ops; |
| struct axis2_handler_desc; |
| struct axis2_msg_ctx; |
| |
| |
| /** |
| * @defgroup axis2_handler Handlers |
| * @ingroup axis2_core_handlers |
| * @{ |
| */ |
| |
| /** |
| * \brief Handler ops struct |
| */ |
| AXIS2_DECLARE_DATA typedef struct axis2_handler_ops |
| { |
| /** |
| * Free an axis2_handler struct |
| * @param env Environment. MUST NOT be NULL, if NULL behaviour is undefined. |
| * @param axis2_handler pointer to axis2_handler struct to be freed |
| * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE |
| */ |
| axis2_status_t (AXIS2_CALL *free) (struct axis2_handler * handler, |
| axis2_env_t **env); |
| |
| |
| /** |
| * Method init |
| * |
| * @param handlerdesc |
| */ |
| axis2_status_t (AXIS2_CALL *init) (struct axis2_handler * handler, |
| axis2_env_t **env, |
| struct axis2_handler_desc *handler_desc); |
| |
| /** |
| * Invoke is called to do the actual work of the Handler object. |
| * If there is a fault during the processing of this method it is |
| * invoke's job to report the error and undo any partial work |
| * that has been completed. |
| * |
| * @param msgContext the <code>axis2_context_message</code> to process with this |
| * <code>Handler</code>. |
| */ |
| axis2_status_t (AXIS2_CALL *invoke) (struct axis2_handler * handler, |
| axis2_env_t **env, |
| struct axis2_msg_ctx *msg_ctx); |
| |
| /** |
| * Method getName |
| * |
| * @return |
| */ |
| axis2_qname_t* (AXIS2_CALL *get_name) (struct axis2_handler * handler, |
| axis2_env_t **env); |
| |
| /** |
| * Method getParameter |
| * |
| * @param name |
| * @return |
| */ |
| axis2_param_t* (AXIS2_CALL *get_param) (struct axis2_handler * handler, |
| axis2_env_t **env, |
| axis2_char_t *name); |
| |
| /** |
| * To get the phaseRule of a handler it is required to get the HnadlerDescription of the handler |
| * so the argumnet pass when it call return as HnadlerDescription |
| * |
| * @return |
| */ |
| struct axis2_handler_desc* (AXIS2_CALL * get_handler_desc) (struct axis2_handler * handler, |
| axis2_env_t **env); |
| /** |
| * derived struct accessor |
| */ |
| /*void* (AXIS2_CALL *get_derived)(struct axis2_handler * handler, |
| axis2_env_t **env); |
| */ |
| /** |
| * derived struct mutator |
| */ |
| /*axis2_status_t (AXIS2_CALL *set_derived)(struct axis2_handler * handler, |
| axis2_env_t **env, void* derived); |
| */ |
| } axis2_handler_ops_t; |
| |
| /** |
| * \brief Handler struct |
| */ |
| typedef struct axis2_handler |
| { |
| /** Handler related ops */ |
| axis2_handler_ops_t *ops; |
| } axis2_handler_t; |
| |
| typedef axis2_handler_t *(AXIS2_CALL * |
| AXIS2_HANDLER_CREATE_FUNC) (axis2_env_t **env, |
| axis2_qname_t *qname); |
| |
| /** |
| * creates handler struct |
| */ |
| AXIS2_DECLARE(axis2_handler_t*) axis2_handler_create(axis2_env_t **env); |
| AXIS2_DECLARE(axis2_handler_t*) axis2_ctx_handler_create(axis2_env_t **env, axis2_qname_t *qname); |
| |
| #define AXIS2_HANDLER_FREE(handler, env) ((handler)->ops->free(handler, env)) |
| #define AXIS2_HANDLER_INIT(handler, env, handler_desc) ((handler)->ops->init(handler, env, handler_desc)) |
| #define AXIS2_HANDLER_INVOKE(handler, env, msg_ctx) ((handler)->ops->invoke(handler, env, msg_ctx)) |
| #define AXIS2_HANDLER_SET_INVOKE(handler, env, invoke) ((handler)->ops->set_invoke(handler, env, invoke)) |
| #define AXIS2_HANDLER_GET_NAME(handler, env) ((handler)->ops->get_name(handler, env)) |
| #define AXIS2_HANDLER_GET_PARAM(handler, env, name) ((handler)->ops->get_param(handler, env, name)) |
| #define AXIS2_HANDLER_GET_HANDLER_DESC(handler, env) ((handler)->ops->get_handler_desc(handler, env)) |
| /*#define AXIS2_HANDLER_GET_DERIVED(handler, env) ((handler)->ops->get_derived(handler, env)) |
| #define AXIS2_HANDLER_SET_DERIVED(handler, env, derived) ((handler)->ops->set_derived(handler, env, derived)) |
| */ |
| /** @} */ |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* AXIS2_HANDLER_H */ |