blob: de5b64508ec7d95814dd3d5b1488313b4ee56e48 [file] [log] [blame]
/*
* 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_PHASE_RULE_H
#define AXIS2_PHASE_RULE_H
/**
* @defgroup axis2_phase_rule phase rule
* @ingroup axis2_desc
* phase rule encapsulates data and operations related to phase rules for a
* given handler. phase rule lives within a handler.
* phase rules of a handler specify the relative location of the
* handler within the phase to which it belongs, with respect to other handlers
* in the phase or first and last positions of the handler chain of the phase.
* @{
*/
/**
* @file axis2_phase_rule.h
*/
#include <axis2_defines.h>
#include <axutil_qname.h>
#include <axutil_param.h>
#ifdef __cplusplus
extern "C"
{
#endif
/** Type name for struct axis2_phase_rule */
typedef struct axis2_phase_rule axis2_phase_rule_t;
/**
* Gets the name of the handler before which the handler associated with
* this rule should be placed.
* @param phase_rule pointer to phase rule
* @param env pointer to environment struct
* @return name of handler before which the handler should be placed
*/
AXIS2_EXTERN const axis2_char_t *AXIS2_CALL
axis2_phase_rule_get_before(
const axis2_phase_rule_t * phase_rule,
const axutil_env_t * env);
/**
* Sets the name of the handler before which the handler associated with
* this rule should be placed.
* @param phase_rule pointer to phase rule
* @param env pointer to environment struct
* @param before name of handler before which the handler should be placed
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
AXIS2_EXTERN axis2_status_t AXIS2_CALL
axis2_phase_rule_set_before(
axis2_phase_rule_t * phase_rule,
const axutil_env_t * env,
const axis2_char_t * before);
/**
* Gets the name of the handler after which the handler associated with
* this rule should be placed.
* @param phase_rule pointer to phase rule
* @param env pointer to environment struct
* @return name of handler after which the handler should be placed
*/
AXIS2_EXTERN const axis2_char_t *AXIS2_CALL
axis2_phase_rule_get_after(
const axis2_phase_rule_t * phase_rule,
const axutil_env_t * env);
/**
* Sets the name of the handler after which the handler associated with
* this rule should be placed.
* @param phase_rule pointer to phase rule
* @param env pointer to environment struct
* @param after name of handler after which the handler should be placed
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
AXIS2_EXTERN axis2_status_t AXIS2_CALL
axis2_phase_rule_set_after(
axis2_phase_rule_t * phase_rule,
const axutil_env_t * env,
const axis2_char_t * after);
/**
* Gets name.
* @param phase_rule pointer to phase rule
* @param env pointer to environment struct
* @return name string
*/
AXIS2_EXTERN const axis2_char_t *AXIS2_CALL
axis2_phase_rule_get_name(
const axis2_phase_rule_t * phase_rule,
const axutil_env_t * env);
/**
* Sets name.
* @param phase_rule pointer to phase rule
* @param env pointer to environment struct
* @param name name string
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
AXIS2_EXTERN axis2_status_t AXIS2_CALL
axis2_phase_rule_set_name(
axis2_phase_rule_t * phase_rule,
const axutil_env_t * env,
const axis2_char_t * name);
/**
* Checks if the handler is the first in phase.
* @param phase_rule pointer to phase rule
* @param env pointer to environment struct
* @return AXIS2_TRUE if the handler associated with this rule is the
* first in phase, else AXIS2_FALSE
*/
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
axis2_phase_rule_is_first(
const axis2_phase_rule_t * phase_rule,
const axutil_env_t * env);
/**
* Sets handler to be the first in phase.
* @param phase_rule pointer to phase rule
* @param env pointer to environment struct
* @param first AXIS2_TRUE if the handler associated with this rule is the
* first in phase, else AXIS2_FALSE
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
AXIS2_EXTERN axis2_status_t AXIS2_CALL
axis2_phase_rule_set_first(
axis2_phase_rule_t * phase_rule,
const axutil_env_t * env,
axis2_bool_t first);
/**
* Checks if the handler is the last in phase.
* @param phase_rule pointer to phase rule
* @param env pointer to environment struct
* @return AXIS2_TRUE if the handler associated with this rule is the
* last in phase, else AXIS2_FALSE
*/
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
axis2_phase_rule_is_last(
const axis2_phase_rule_t * phase_rule,
const axutil_env_t * env);
/**
* Sets handler to be the last in phase.
* @param phase_rule pointer to phase rule
* @param env pointer to environment struct
* @param last AXIS2_TRUE if the handler associated with this rule is the
* last in phase, else AXIS2_FALSE
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
AXIS2_EXTERN axis2_status_t AXIS2_CALL
axis2_phase_rule_set_last(
axis2_phase_rule_t * phase_rule,
const axutil_env_t * env,
axis2_bool_t last);
/**
* Frees phase rule.
* @param phase_rule pointer to phase rule
* @param env pointer to environment struct
* @return void
*/
AXIS2_EXTERN void AXIS2_CALL
axis2_phase_rule_free(
axis2_phase_rule_t * phase_rule,
const axutil_env_t * env);
/**
* Clones phase rule.
* @param phase_rule pointer to phase rule
* @param env pointer to environment struct
* @return pointer to newly cloned phase rule
*/
AXIS2_EXTERN axis2_phase_rule_t *AXIS2_CALL
axis2_phase_rule_clone(
axis2_phase_rule_t * phase_rule,
const axutil_env_t * env);
/**
* Creates a phase rule struct instance.
* @param env pointer to environment struct
* @param phase_name name of the phase rule
* @return pointer to newly created phase rule
*/
AXIS2_EXTERN axis2_phase_rule_t *AXIS2_CALL
axis2_phase_rule_create(
const axutil_env_t * env,
const axis2_char_t * name);
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* AXIS2_PHASE_RULE_H */