blob: 3e1e3d22861edcafbc2f0d704f08963c542e32d1 [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_OPTIONS_H
#define AXIS2_OPTIONS_H
/**
* @file axis2_options.h
* @brief axis2 MEP client gets the parameters from this
*/
#include <axis2_defines.h>
#include <axis2_env.h>
#include <axis2_transport_in_desc.h>
#include <axis2_endpoint_ref.h>
#include <axis2_hash.h>
#include <axis2_relates_to.h>
#include <axis2_transport_out_desc.h>
#include <axis2_transport_receiver.h> /*still in modules/core/transports*/
#include <axiom_element.h>
#include <axis2_msg_info_headers.h>
#define AXIS2_DEFAULT_TIMEOUT_MILLISECONDS 30000
#define AXIS2_COPY_PROPERTIES "copy_properties"
#ifdef __cplusplus
extern "C"
{
#endif
/** @defgroup axis2_options Options
* @ingroup axis2_core_clientapi
* @{
*/
typedef struct axis2_options_ops axis2_options_ops_t;
typedef struct axis2_options axis2_options_t;
/**
* @brief Options ops struct
* Encapsulator struct for ops of axis2_options
*/
struct axis2_options_ops
{
axis2_char_t* (AXIS2_CALL *
get_action)(struct axis2_options *options,
const axis2_env_t *env);
axis2_endpoint_ref_t* (AXIS2_CALL *
get_fault_to)(struct axis2_options *options,
const axis2_env_t *env);
axis2_endpoint_ref_t* (AXIS2_CALL *
get_from)(struct axis2_options *options,
const axis2_env_t *env);
axis2_transport_receiver_t* (AXIS2_CALL *
get_transport_receiver)(struct axis2_options *options,
const axis2_env_t *env);
axis2_transport_in_desc_t* (AXIS2_CALL *
get_transport_in)(struct axis2_options *options,
const axis2_env_t *env);
const axis2_char_t* (AXIS2_CALL *
get_transport_in_protocol)(struct axis2_options *options,
const axis2_env_t *env);
axis2_char_t* (AXIS2_CALL *
get_message_id)(struct axis2_options *options,
const axis2_env_t *env);
axis2_hash_t* (AXIS2_CALL *
get_properties)(struct axis2_options *options,
const axis2_env_t *env);
/**
* @param key
* @return the value realeted to this key. Null, if not found.
*/
void* (AXIS2_CALL *
get_property)(struct axis2_options *options,
const axis2_env_t *env,
axis2_char_t *key);
axis2_relates_to_t* (AXIS2_CALL *
get_relates_to)(struct axis2_options *options,
const axis2_env_t *env);
axis2_endpoint_ref_t* (AXIS2_CALL *
get_reply_to)(struct axis2_options *options,
const axis2_env_t *env);
axis2_transport_out_desc_t* (AXIS2_CALL *
get_transport_out)(struct axis2_options *options,
const axis2_env_t *env);
axis2_char_t* (AXIS2_CALL *
get_sender_transport_protocol)(struct axis2_options *options,
const axis2_env_t *env);
const axis2_char_t* (AXIS2_CALL *
get_soap_version_uri)(struct axis2_options *options,
const axis2_env_t *env);
/**
* Gets the wait time after which a client times out in a blocking scenario.
* The default is AXIS2_DEFAULT_TIMEOUT_MILLISECONDS
*
* @return timeOutInMilliSeconds
*/
long (AXIS2_CALL *
get_timeout_in_milli_seconds)(struct axis2_options *options,
const axis2_env_t *env);
axis2_endpoint_ref_t* (AXIS2_CALL *
get_to)(struct axis2_options *options,
const axis2_env_t *env);
/**not added - is_exception_to_be_thrown_on_soap_fault*/
axis2_bool_t (AXIS2_CALL *
is_use_seperate_listener)(struct axis2_options *options,
const axis2_env_t *env);
struct axis2_options * (AXIS2_CALL *
get_parent)(struct axis2_options *options,
const axis2_env_t *env);
void (AXIS2_CALL *
set_parent)(struct axis2_options *options,
const axis2_env_t *env,
struct axis2_options *parent);
void (AXIS2_CALL *
set_action)(struct axis2_options *options,
const axis2_env_t *env,
const axis2_char_t *action);
void (AXIS2_CALL *
set_fault_to)(struct axis2_options *options,
const axis2_env_t *env,
axis2_endpoint_ref_t *fault_to);
void (AXIS2_CALL *
set_from)(struct axis2_options *options,
const axis2_env_t *env,
axis2_endpoint_ref_t *from);
void (AXIS2_CALL *
set_to)(struct axis2_options *options,
const axis2_env_t *env,
axis2_endpoint_ref_t *to);
void (AXIS2_CALL *
set_transport_receiver)(struct axis2_options *options,
const axis2_env_t *env,
axis2_transport_receiver_t *receiver);
void (AXIS2_CALL *
set_transport_in)(struct axis2_options *options,
const axis2_env_t *env,
axis2_transport_in_desc_t *transport_in);
void (AXIS2_CALL *
set_transport_in_protocol)(struct axis2_options *options,
const axis2_env_t *env,
axis2_char_t *transport_in_protocol);
void (AXIS2_CALL *
set_message_id)(struct axis2_options *options,
const axis2_env_t *env,
axis2_char_t *message_id);
/**
* This will set the properties to the context. But in setting that one may
* need to "copy" all the properties from the source properties to the
* target properties. To enable this we introduced a property
* AXIS2_COPY_PROPERTIES so that if set to
* Boolean(true), this code will copy the whole thing, without just
* referencing to the source.
*
* @param properties
*/
axis2_status_t (AXIS2_CALL *
set_properties)(struct axis2_options *options,
const axis2_env_t *env,
axis2_hash_t *properties);
/**
* Properties you need to pass in to the message context must be set via
* this. If there is a method to the set this property, within this class,
* its encouraged to use that method, without duplicating stuff or making
* room for bugs.
*
* @param property_key
* @param property
*/
void (AXIS2_CALL *
set_property)(struct axis2_options *options,
const axis2_env_t *env,
const axis2_char_t *property_key,
const void *property);
void (AXIS2_CALL *
set_relates_to)(struct axis2_options *options,
const axis2_env_t *env,
axis2_relates_to_t *relates_to);
void (AXIS2_CALL *
set_reply_to)(struct axis2_options *options,
const axis2_env_t *env,
axis2_endpoint_ref_t *reply_to);
void (AXIS2_CALL *
set_transport_out)(struct axis2_options *options,
const axis2_env_t *env,
axis2_transport_out_desc_t *transport_out);
axis2_status_t (AXIS2_CALL *
set_sender_transport)(struct axis2_options *options,
const axis2_env_t *env,
axis2_char_t *sender_transport,
axis2_conf_t *conf);
void (AXIS2_CALL *
set_soap_version_uri)(struct axis2_options *options,
const axis2_env_t *env,
const axis2_char_t *soap_version_uri);
void (AXIS2_CALL *
set_timeout_in_milli_seconds)(struct axis2_options *options,
const axis2_env_t *env,
long timeout_in_milli_seconds);
axis2_status_t (AXIS2_CALL *
set_transport_info)(struct axis2_options *options,
const axis2_env_t *env,
axis2_char_t *sender_transport,
axis2_char_t *receiver_transport,
axis2_bool_t use_seperate_listener);
void (AXIS2_CALL *
set_use_seperate_listener)(struct axis2_options *options,
const axis2_env_t *env,
axis2_bool_t use_seperate_listener);
void (AXIS2_CALL *
add_reference_parameter)(struct axis2_options *options,
const axis2_env_t *env,
axiom_node_t *reference_parameter);
axis2_bool_t (AXIS2_CALL *
is_manage_session)(struct axis2_options *options,
const axis2_env_t *env);
void (AXIS2_CALL *
set_manage_session)(struct axis2_options *options,
const axis2_env_t *env,
axis2_bool_t manage_session);
/**
* this method is used to set the msg info headers to msg ctx. not
* intended to be used from outside
*/
axis2_msg_info_headers_t* (AXIS2_CALL *
get_msg_info_headers)(struct axis2_options *options,
const axis2_env_t *env);
int (AXIS2_CALL *
get_soap_version)(
struct axis2_options *options,
const axis2_env_t *env);
axis2_status_t (AXIS2_CALL *
set_soap_version)(
struct axis2_options *options,
const axis2_env_t *env,
int soap_version);
axis2_status_t (AXIS2_CALL *
set_enable_mtom)(
struct axis2_options *options,
const axis2_env_t *env,
axis2_bool_t enable_mtom);
axis2_bool_t (AXIS2_CALL *
get_enable_mtom)(
struct axis2_options *options,
const axis2_env_t *env);
axis2_status_t (AXIS2_CALL *
free)(struct axis2_options *options,
const axis2_env_t *env);
};
/**
* @brief Options struct
* Axis2 Options
*/
struct axis2_options
{
axis2_options_ops_t *ops;
};
AXIS2_EXTERN axis2_options_t* AXIS2_CALL axis2_options_create(const axis2_env_t *env);
AXIS2_EXTERN axis2_options_t* AXIS2_CALL axis2_options_create_with_parent(const axis2_env_t *env,
axis2_options_t *parent);
/************************** Start of function macros **************************/
#define AXIS2_OPTIONS_GET_ACTION(options, env) \
((options)->ops->get_action(options, env))
#define AXIS2_OPTIONS_GET_FAULT_TO(options, env) \
((options)->ops->get_fault_to(options, env))
#define AXIS2_OPTIONS_GET_FROM(options, env) \
((options)->ops->get_from(options, env))
#define AXIS2_OPTIONS_GET_TRANSPORT_RECEIVER(options, env) \
((options)->ops->get_transport_receiver(options, env))
#define AXIS2_OPTIONS_GET_TRANSPORT_IN(options, env) \
((options)->ops->get_transport_in(options, env))
#define AXIS2_OPTIONS_GET_TRANSPORT_IN_PROTOCOL(options, env) \
((options)->ops->get_transport_in_protocol(options, env))
#define AXIS2_OPTIONS_GET_MESSAGE_ID(options, env) \
((options)->ops->get_message_id(options, env))
#define AXIS2_OPTIONS_GET_PROPERTIES(options, env) \
((options)->ops->get_properties(options, env))
#define AXIS2_OPTIONS_GET_PROPERTY(options, env, key) \
((options)->ops->get_property(options, env, key))
#define AXIS2_OPTIONS_GET_RELATES_TO(options, env) \
((options)->ops->get_relates_to(options, env))
#define AXIS2_OPTIONS_GET_REPLY_TO(options, env) \
((options)->ops->get_reply_to(options, env))
#define AXIS2_OPTIONS_GET_TRANSPORT_OUT(options, env) \
((options)->ops->get_transport_out(options, env))
#define AXIS2_OPTIONS_GET_SENDER_PROTOCOL(options, env) \
((options)->ops->get_sender_transport_protocol(options, env))
#define AXIS2_OPTIONS_GET_SOAP_VERSION_URI(options, env) \
((options)->ops->get_soap_version_uri(options, env))
#define AXIS2_OPTIONS_GET_TIMEOUT_IN_MILLI_SECONDS(options, env) \
((options)->ops->get_timeout_in_milli_seconds(options, env))
#define AXIS2_OPTIONS_GET_TO(options, env) \
((options)->ops->get_to(options, env))
#define AXIS2_OPTIONS_IS_USE_SEPERATE_LISTENER(options, env) \
((options)->ops->is_use_seperate_listener(options, env))
#define AXIS2_OPTIONS_GET_PARENT(options, env) \
((options)->ops->get_parent(options, env))
#define AXIS2_OPTIONS_SET_PARENT(options, env, parent) \
((options)->ops->set_parent(options, env, parent))
#define AXIS2_OPTIONS_SET_ACTION(options, env, action) \
((options)->ops->set_action(options, env, action))
#define AXIS2_OPTIONS_SET_FAULT_TO(options, env, fault_to) \
((options)->ops->set_fault_to(options, env, fault_to))
#define AXIS2_OPTIONS_SET_FROM(options, env, from) \
((options)->ops->set_from(options, env, from))
#define AXIS2_OPTIONS_SET_TO(options, env, to) \
((options)->ops->set_to(options, env, to))
#define AXIS2_OPTIONS_SET_TRANSPORT_RECEIVER(options, env, receiver) \
((options)->ops->set_transport_receiver(options, env, receiver))
#define AXIS2_OPTIONS_SET_TRANSPORT_IN(options, env, transport_in) \
((options)->ops->set_transport_in(options, env, transport_in))
#define AXIS2_OPTIONS_SET_TRANSPORT_IN_PROTOCOL(options, env, transport_in_protocol) \
((options)->ops->set_transport_in_protocol(options, env, transport_in_protocol))
#define AXIS2_OPTIONS_SET_MESSAGE_ID(options, env, message_id) \
((options)->ops->set_message_id(options, env, message_id))
#define AXIS2_OPTIONS_SET_PROPERTIES(options, env, properties) \
((options)->ops->set_properties(options, env, properties))
#define AXIS2_OPTIONS_SET_PROPERTY(options, env, key, property) \
((options)->ops->set_property(options, env, key, property))
#define AXIS2_OPTIONS_SET_RELATES_TO(options, env, relates_to) \
((options)->ops->set_relates_to(options, env, relates_to))
#define AXIS2_OPTIONS_SET_REPLY_TO(options, env, reply_to) \
((options)->ops->set_reply_to(options, env, reply_to))
#define AXIS2_OPTIONS_SET_TRANSPORT_OUT(options, env, transport_out) \
((options)->ops->set_transport_out(options, env, transport_out))
#define AXIS2_OPTIONS_SET_SENDER_TRANSPORT(options, env, sender_transport, conf) \
((options)->ops->set_sender_transport(options, env, sender_transport, conf))
#define AXIS2_OPTIONS_SET_SOAP_VERSION_URI(options, env, soap_version_uri) \
((options)->ops->set_soap_version_uri(options, env, soap_version_uri))
#define AXIS2_OPTIONS_SET_TIMEOUT_IN_MILLI_SECONDS(options, env, timeout_in_milli_seconds) \
((options)->ops->set_timeout_in_milli_seconds(options, env, timeout_in_milli_seconds))
#define AXIS2_OPTIONS_SET_TRANSPORT_INFO(options, env, sender_transport, receiver_transport, user_seperate_listener) \
((options)->ops->set_tranport_info(options, env, sender_transport, receiver_transport, user_seperate_listener))
#define AXIS2_OPTIONS_SET_USE_SEPERATE_LISTENER(options, env, use_seperate_listener) \
((options)->ops->set_use_seperate_listener(options, env, use_seperate_listener))
#define AXIS2_OPTIONS_ADD_REFERENCE_PARAMETER(options, env, reference_parameter) \
((options)->ops->add_reference_parameter(options, env, reference_parameter))
#define AXIS2_OPTIONS_IS_MANAGE_SESSION(options, env) \
((options)->ops->is_manage_session(options, env))
#define AXIS2_OPTIONS_SET_MANAGE_SESSION(options, env, manage_session) \
((options)->ops->set_manage_session(options, env, manage_session))
#define AXIS2_OPTIONS_GET_MSG_INFO_HEADERS(options, env) \
((options)->ops->get_msg_info_headers(options, env))
#define AXIS2_OPTIONS_SET_SOAP_VERSION(options, env, soap_version) \
((options)->ops->set_soap_version(options, env, soap_version))
#define AXIS2_OPTIONS_GET_SOAP_VERSION(options, env) \
((options)->ops->get_soap_version(options, env))
#define AXIS2_OPTIONS_SET_ENABLE_MTOM(options, env, enable_mtom) \
((options)->ops->set_enable_mtom(options, env, enable_mtom))
#define AXIS2_OPTIONS_GET_ENABLE_MTOM(options, env) \
((options)->ops->get_enable_mtom(options, env))
#define AXIS2_OPTIONS_FREE(options, env) \
((options)->ops->free(options, env))
/************************** End of function macros ****************************/
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* AXIS2_OPTIONS_H */