blob: 734abd393dedb99b40c3a4121d30e1d6646ffeae [file] [log] [blame]
/*
* 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_DESC_H
#define AXIS2_HANDLER_DESC_H
/**
* @file axis2_handler_desc.h
* @brief Axis2 handler_desc interface
*/
#include <axis2_utils_defines.h>
#include <axis2_qname.h>
#include <axis2_param.h>
#include <axis2_param_container.h>
#include <axis2_phase_rule.h>
#include <axis2_handler.h>
#ifdef __cplusplus
extern "C"
{
#endif
struct axis2_handler_desc;
struct axis2_handler_desc_ops;
/**
* @defgroup axis2_handler_desc Handler Description
* @ingroup axis2_description
* @{
*/
/**
* \brief Handler Description ops struct
*/
AXIS2_DECLARE_DATA typedef struct axis2_handler_desc_ops
{
axis2_qname_t* (AXIS2_CALL *
get_qname) (struct axis2_handler_desc *handler_desc,
const axis2_env_t *env);
axis2_status_t (AXIS2_CALL *
set_qname) (struct axis2_handler_desc *handler_desc,
const axis2_env_t *env,
axis2_qname_t *qname);
axis2_phase_rule_t* (AXIS2_CALL *
get_rules) (struct axis2_handler_desc *handler_desc,
const axis2_env_t *env);
axis2_status_t (AXIS2_CALL *
set_rules) (struct axis2_handler_desc *handler_desc,
const axis2_env_t *env,
axis2_phase_rule_t *phase_rule);
axis2_param_t* (AXIS2_CALL *
get_param) (struct axis2_handler_desc *handler_desc,
const axis2_env_t *env,
axis2_char_t *name);
axis2_status_t (AXIS2_CALL *
add_param) (struct axis2_handler_desc *handler_desc,
const axis2_env_t *env,
axis2_param_t * param);
axis2_array_list_t* (AXIS2_CALL *
get_params) (struct axis2_handler_desc *handler_desc,
const axis2_env_t *env);
/**
* checks whether the paramter is locked at any levle
*/
axis2_bool_t (AXIS2_CALL *
is_param_locked)(struct axis2_handler_desc *handler_desc,
const axis2_env_t *env, axis2_char_t * param_name);
axis2_handler_t* (AXIS2_CALL *
get_handler) (struct axis2_handler_desc *handler_desc,
const axis2_env_t *env);
axis2_status_t (AXIS2_CALL *
set_handler) (struct axis2_handler_desc *handler_desc,
const axis2_env_t *env,
axis2_handler_t * handler);
axis2_char_t* (AXIS2_CALL *
get_class_name) (struct axis2_handler_desc *handler_desc,
const axis2_env_t *env);
axis2_status_t (AXIS2_CALL *
set_class_name) (struct axis2_handler_desc *handler_desc,
const axis2_env_t *env,
axis2_char_t *class_name);
axis2_param_container_t* (AXIS2_CALL *
get_parent) (struct axis2_handler_desc *handler_desc,
const axis2_env_t *env);
axis2_status_t (AXIS2_CALL *
set_parent) (struct axis2_handler_desc *handler_desc,
const axis2_env_t *env,
axis2_param_container_t * parent);
axis2_status_t (AXIS2_CALL *
free) (struct axis2_handler_desc *handler_desc,
const axis2_env_t *env);
} axis2_handler_desc_ops_t;
/**
* \brief Handler Description struct
*/
typedef struct axis2_handler_desc
{
/** Handler Description related ops */
axis2_handler_desc_ops_t *ops;
/** param container */
axis2_param_container_t *param_container;
} axis2_handler_desc_t;
/**
* creates handler_desc struct
* @param qname qname, can be NULL
*/
AXIS2_EXTERN axis2_handler_desc_t* AXIS2_CALL
axis2_handler_desc_create_with_qname(const axis2_env_t *env, axis2_qname_t *qname);
#define AXIS2_HANDLER_DESC_GET_HANDLER(handler_desc, env) \
((handler_desc)->ops->get_handler(handler_desc, env))
#define AXIS2_HANDLER_DESC_SET_HANDLER(handler_desc, env, handler) \
((handler_desc)->ops->set_handler(handler_desc, env, handler))
#define AXIS2_HANDLER_DESC_GET_RULES(handler_desc, env) \
((handler_desc)->ops->get_rules(handler_desc, env))
#define AXIS2_HANDLER_DESC_SET_RULES(handler_desc, env, rules) \
((handler_desc)->ops->set_rules(handler_desc, env, rules))
#define AXIS2_HANDLER_DESC_GET_QNAME(handler_desc, env) \
((handler_desc)->ops->get_qname(handler_desc, env))
#define AXIS2_HANDLER_DESC_SET_QNAME(handler_desc, env, name) \
((handler_desc)->ops->set_qname(handler_desc, env, name))
#define AXIS2_HANDLER_DESC_GET_PARAM(handler_desc, env, name) \
((handler_desc)->ops->get_param(handler_desc, env, name))
#define AXIS2_HANDLER_DESC_ADD_PARAM(handler_desc, env, param) \
((handler_desc)->ops->add_param(handler_desc, env, param))
#define AXIS2_HANDLER_DESC_IS_PHASE_FIRST(handler_desc, env) \
((handler_desc)->ops->is_phase_first((handler_desc, env))
#define AXIS2_HANDLER_DESC_GET_PHASE_FIRST(handler_desc, env, phase_first) \
((handler_desc)->ops->set_phase_first(handler_desc, env, phase_first))
#define AXIS2_HANDLER_DESC_IS_PHASE_LAST(handler_desc, env) \
((handler_desc)->ops->is_phase_last(handler_desc, env))
#define AXIS2_HANDLER_DESC_GET_PHASE_LAST(handler_desc, env, phase_last) \
((handler_desc)->ops->set_phase_last(handler_desc, env, phase_last))
#define AXIS2_HANDLER_DESC_GET_CLASS_NAME(handler_desc, env) \
((handler_desc)->ops->get_class_name(handler_desc, env))
#define AXIS2_HANDLER_DESC_SET_CLASS_NAME(handler_desc, env, class_name) \
((handler_desc)->ops->set_class_name(handler_desc, env, class_name))
#define AXIS2_HANDLER_DESC_GET_PARENT(handler_desc, env) \
((handler_desc)->ops->get_parent(handler_desc, env))
#define AXIS2_HANDLER_DESC_SET_PARENT(handler_desc, env, parent) \
((handler_desc)->ops->set_parent(handler_desc, env, parent))
#define AXIS2_HANDLER_DESC_FREE(handler_desc, env) \
((handler_desc)->ops->free(handler_desc, env))
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* AXIS2_HANDLER_DESC_H */