| /* |
| * 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_SOAP_HEADER_H |
| #define AXIS2_SOAP_HEADER_H |
| |
| /** |
| * @file axis2_soap_header.h |
| * @brief axis2_soap_header struct |
| */ |
| #include <axis2_env.h> |
| #include <axis2_om_node.h> |
| #include <axis2_om_element.h> |
| #include <axis2_array_list.h> |
| #include <axis2_om_children_qname_iterator.h> |
| #include <axis2_om_children_with_specific_attribute_iterator.h> |
| #include <axis2_hash.h> |
| #include <axis2_soap_envelope.h> |
| |
| #ifdef __cplusplus |
| extern "C" |
| { |
| #endif |
| |
| typedef struct axis2_soap_header axis2_soap_header_t; |
| typedef struct axis2_soap_header_ops axis2_soap_header_ops_t; |
| |
| struct axis2_soap_header_block; |
| struct axis2_soap_builder; |
| |
| |
| /** |
| * @defgroup axis2_soap_header |
| * @ingroup axis2_soap |
| * @{ |
| */ |
| |
| /** |
| * \brief soap_header operations struct |
| * ops Encapsulator struct of axis2_soap header |
| */ |
| AXIS2_DECLARE_DATA struct axis2_soap_header_ops |
| { |
| /** |
| * Free an axis2_soap_header |
| * @param header pointer to soap_header struct |
| * @param env Environment. MUST NOT be NULL |
| * @return satus of the op. AXIS2_SUCCESS on success |
| * else AXIS2_FAILURE |
| */ |
| axis2_status_t (AXIS2_CALL *free_fn)(axis2_soap_header_t *header, |
| axis2_env_t **env); |
| |
| /** |
| * create a new axis2_soap_header_block_t struct initialized with the |
| * specified name and adds it to passed axis2_soap_header_t struct. |
| * @param env environment must not be null |
| * @param localName |
| * @param ns |
| * @return The newly created axis2_soap_header_block_t struct |
| */ |
| struct axis2_soap_header_block* (AXIS2_CALL *add_header_block) |
| (axis2_soap_header_t* header, |
| axis2_env_t **env, |
| axis2_char_t *localname, |
| axis2_om_namespace_t *ns); |
| /** |
| * returns a hash_table of all the soap_header_block_t struct in this |
| * soap_header_t object that have the the specified actor. An |
| * actor is a global attribute that indicates the intermediate parties to |
| * whom the message should be sent. An actor receives the message and then |
| * sends it to the next actor. The default actor is the ultimate intended |
| * recipient for the message, so if no actor attribute is set in a |
| * axis2_soap_header_t struct the message is sent to its ultimate |
| * destination. |
| */ |
| axis2_hash_t* (AXIS2_CALL *examine_header_blocks) |
| (axis2_soap_header_t* header, |
| axis2_env_t **env, |
| axis2_char_t* param_role); |
| /** |
| * returns an arraylist of header_blocks which has a given namesapce uri |
| * @param header |
| * @param env environment must not be null |
| * @param ns_uri namespace uri |
| * @return pointer to axis2_array_list_t, or null if no header_blocks with |
| * given namespace uri exists |
| * The returned array_list must be freed by the user. |
| */ |
| axis2_array_list_t* (AXIS2_CALL *get_header_blocks_with_namespace_uri) |
| (axis2_soap_header_t* header, |
| axis2_env_t **env, |
| axis2_char_t *ns_uri); |
| /** |
| * returns an iterator to iterate through all soap header block's om nodes |
| * @param header |
| * @param env environment |
| * @returns axis2_om_children_qname_iterator_t or null if no header blocks |
| * present |
| */ |
| axis2_om_children_qname_iterator_t* (AXIS2_CALL *examine_all_header_blocks) |
| (axis2_soap_header_t* header, |
| axis2_env_t **env); |
| /** |
| * returns an iterator to iterate through all header blocks om_nodes |
| * with the matching role attribute |
| * @param header soap_header |
| * @param env environment |
| * @param role |
| * @returns iterator or null if no header blocks present with matching |
| * role attribute |
| */ |
| axis2_om_children_with_specific_attribute_iterator_t * |
| (AXIS2_CALL *extract_header_blocks)(axis2_soap_header_t *header, |
| axis2_env_t **env, |
| axis2_char_t *role); |
| |
| |
| |
| /** |
| * This is intended to be used by the builder, |
| * do not use this function in other places |
| */ |
| axis2_status_t (AXIS2_CALL *set_base_node) |
| (axis2_soap_header_t *header, |
| axis2_env_t **env, |
| axis2_om_node_t *node); |
| /** |
| * returns the axis2_om_node_t struct wrapped in soap_header |
| * @param header soap_header_t |
| * @param env environment must not be null |
| * @return axis2_om_node_t |
| */ |
| axis2_om_node_t* (AXIS2_CALL *get_base_node) |
| (axis2_soap_header_t *header, |
| axis2_env_t **env); |
| |
| /** |
| * return the soap_version of this soap_header |
| * @param header soap_header |
| * @param env environment must not be null |
| * @return AXIS2_SOAP11 or AXIS2_SOAP12 |
| */ |
| int (AXIS2_CALL *get_soap_version) (axis2_soap_header_t *header, |
| axis2_env_t **env); |
| /** |
| * sets the soap version for this soap_header |
| * @param soap_version AXIS2_SOAP12 or AXIS2_SOAP11 |
| */ |
| |
| axis2_status_t (AXIS2_CALL *set_soap_version) |
| (axis2_soap_header_t *header, |
| axis2_env_t **env, |
| int soap_version); |
| |
| axis2_status_t (AXIS2_CALL *set_header_block) |
| (axis2_soap_header_t *header, |
| axis2_env_t **env, |
| struct axis2_soap_header_block* header_block); |
| |
| axis2_status_t (AXIS2_CALL *set_builder)(axis2_soap_header_t *header, |
| axis2_env_t **env, |
| struct axis2_soap_builder* builder); |
| |
| axis2_hash_t* (AXIS2_CALL *get_all_header_blocks)(axis2_soap_header_t *header, |
| axis2_env_t **env); |
| |
| }; |
| |
| /** |
| * \brief soap_header struct |
| * represent a soap_header |
| */ |
| struct axis2_soap_header |
| { |
| /** operation of axis2_soap_header struct */ |
| axis2_soap_header_ops_t *ops; |
| |
| }; |
| |
| /** |
| * creates a soap struct |
| * @param env Environment. MUST NOT be NULL |
| */ |
| AXIS2_DECLARE(axis2_soap_header_t *) |
| axis2_soap_header_create(axis2_env_t **env); |
| |
| |
| AXIS2_DECLARE(axis2_soap_header_t *) |
| axis2_soap_header_create_with_parent(axis2_env_t **env, |
| struct axis2_soap_envelope *envelope); |
| |
| AXIS2_DECLARE(axis2_soap_header_t *) |
| axis2_soap11_header_create_with_parent(axis2_env_t **env, |
| axis2_soap_envelope_t *envelope); |
| |
| AXIS2_DECLARE(axis2_soap_header_t *) |
| axis2_soap12_header_create_with_parent(axis2_env_t **env, |
| axis2_soap_envelope_t *envelope); |
| |
| /******************** Macros **************************************************/ |
| |
| |
| /** free soap_header */ |
| #define AXIS2_SOAP_HEADER_FREE(header , env) \ |
| ((header)->ops->free_fn(header, env)) |
| |
| #define AXIS2_SOAP_HEADER_ADD_HEADER_BLOCK(header, env, localname, ns) \ |
| ((header)->ops->add_header_block(header, env, localname, ns)) |
| |
| #define AXIS2_SOAP_HEADER_EXAMINE_HEADER_BLOCKS(header, env, param_role) \ |
| ((header)->ops->examine_header_blocks(header, env, param_role)) |
| |
| #define AXIS2_SOAP_HEADER_EXAMINE_ALL_HEADER_BLOCKS(header, env) \ |
| ((header)->ops->examine_all_header_blocks(header, env)) |
| |
| #define AXIS2_SOAP_HEADER_EXTRACT_HEADER_BLOCKS(header, env, role) \ |
| ((header)->ops->extract_header_blocks(header, env, role)) |
| |
| #define AXIS2_SOAP_HEADER_SET_BASE_NODE(header, env, node) \ |
| ((header)->ops->set_base_node(header, env, node)) |
| |
| #define AXIS2_SOAP_HEADER_GET_BASE_NODE(header, env) \ |
| ((header)->ops->get_base_node(header, env)) |
| |
| #define AXIS2_SOAP_HEADER_SET_SOAP_VERSION(header, env, version) \ |
| ((header)->ops->set_soap_version(header, env, version)) |
| |
| #define AXIS2_SOAP_HEADER_GET_SOAP_VERSION(header, env) \ |
| ((header)->ops->get_soap_version(header, env)) |
| |
| #define AXIS2_SOAP_HEADER_SET_HEADER_BLOCK(header, env, header_block) \ |
| ((header)->ops->set_header_block(header, env, header_block)) |
| |
| #define AXIS2_SOAP_HEADER_SET_BUILDER(header, env, builder) \ |
| ((header)->ops->set_builder(header, env, builder)) |
| |
| #define AXIS2_SOAP_HEADER_GET_HEADER_BLOCKS_WITH_NAMESPACE_URI(header, env, uri)\ |
| ((header)->ops->get_header_blocks_with_namespace_uri(header, env, uri)) |
| |
| #define AXIS2_SOAP_HEADER_GET_ALL_HEADER_BLOCKS(header, env) \ |
| ((header)->ops->get_all_header_blocks(header, env)) |
| /** @} */ |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| |
| #endif /* AXIS2_SOAP_HEADER_H */ |