blob: 3e7454b11d04940e5747e0a27f4a53061e451a4c [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.
*/
#include <sandesha2_property_bean.h>
#include <sandesha2_constants.h>
#include <stdio.h>
#include <axutil_string.h>
#include <axutil_utils.h>
/**
* @brief Property Bean struct impl
* Sandesha2 Property Bean
*/
struct sandesha2_property_bean_t
{
long inactive_timeout_interval;
long ack_interval;
long retrans_interval;
axis2_bool_t is_exp_backoff;
axis2_char_t *storage_mgr;
axis2_bool_t is_in_order;
axutil_array_list_t *msg_types_to_drop;
int max_retrans_count;
int terminate_delay;
int polling_delay;
axis2_char_t *db_path;
};
AXIS2_EXTERN sandesha2_property_bean_t* AXIS2_CALL
sandesha2_property_bean_create(
const axutil_env_t *env)
{
sandesha2_property_bean_t *bean = NULL;
bean = (sandesha2_property_bean_t *)AXIS2_MALLOC
(env->allocator, sizeof(sandesha2_property_bean_t));
if(!bean)
{
AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
return NULL;
}
bean->inactive_timeout_interval = 0;
bean->ack_interval = 0;
bean->retrans_interval = 0;
bean->is_exp_backoff = 0;
bean->storage_mgr= NULL;
bean->is_in_order = AXIS2_FALSE;
bean->msg_types_to_drop = NULL;
bean->max_retrans_count = 0;
bean->terminate_delay = 0;
bean->polling_delay = 0;
bean->db_path = NULL;
return bean;
}
void AXIS2_CALL
sandesha2_property_bean_free(
sandesha2_property_bean_t *bean,
const axutil_env_t *env)
{
if(bean->msg_types_to_drop)
{
int count = axutil_array_list_size(bean->msg_types_to_drop,
env);
int i = 0;
for(i = 0; i < count; i++)
{
int *msg_type = axutil_array_list_get(
bean->msg_types_to_drop, env, i);
if(NULL != msg_type)
AXIS2_FREE(env->allocator, msg_type);
}
axutil_array_list_free(bean->msg_types_to_drop, env);
}
if(bean->db_path)
{
AXIS2_FREE(env->allocator, bean->db_path);
bean->db_path = NULL;
}
if(bean->storage_mgr)
{
AXIS2_FREE(env->allocator, bean->storage_mgr);
bean->storage_mgr = NULL;
}
AXIS2_FREE(env->allocator, bean);
return;
}
void AXIS2_CALL
sandesha2_property_bean_free_void_arg(
void *arg,
const axutil_env_t *env)
{
return sandesha2_property_bean_free((sandesha2_property_bean_t*)arg, env);
}
long AXIS2_CALL
sandesha2_property_bean_get_inactive_timeout_interval(
sandesha2_property_bean_t *bean,
const axutil_env_t *env)
{
return bean->inactive_timeout_interval;
}
axis2_status_t AXIS2_CALL
sandesha2_property_bean_set_inactive_timeout_interval(
sandesha2_property_bean_t *bean,
const axutil_env_t *env, long interval)
{
bean->inactive_timeout_interval = interval;
return AXIS2_SUCCESS;
}
axis2_status_t AXIS2_CALL
sandesha2_property_bean_set_inactive_timeout_interval_with_units(
sandesha2_property_bean_t *bean,
const axutil_env_t *env, long interval,
axis2_char_t *units)
{
long multiplier = -1;
AXIS2_PARAM_CHECK(env->error, units, AXIS2_FAILURE);
if(0 == axutil_strcmp(units, "seconds"))
multiplier = 1;
else if(0 == axutil_strcmp(units, "minutes"))
multiplier = 60;
else if(0 == axutil_strcmp(units, "hours"))
multiplier = 60*60;
else if(0 == axutil_strcmp(units, "days"))
multiplier = 24*60*60;
else
return AXIS2_FAILURE;
return sandesha2_property_bean_set_inactive_timeout_interval(bean, env,
multiplier*interval);
}
long AXIS2_CALL
sandesha2_property_bean_get_ack_interval(
sandesha2_property_bean_t *bean,
const axutil_env_t *env)
{
return bean->ack_interval;
}
axis2_status_t AXIS2_CALL
sandesha2_property_bean_set_ack_interval(
sandesha2_property_bean_t *bean,
const axutil_env_t *env, long interval)
{
bean->ack_interval = interval;
return AXIS2_SUCCESS;
}
long AXIS2_CALL
sandesha2_property_bean_get_retrans_interval(
sandesha2_property_bean_t *bean,
const axutil_env_t *env)
{
return bean->retrans_interval;
}
axis2_status_t AXIS2_CALL
sandesha2_property_bean_set_retrans_interval(
sandesha2_property_bean_t *bean,
const axutil_env_t *env, long interval)
{
bean->retrans_interval = interval;
return AXIS2_SUCCESS;
}
axis2_bool_t AXIS2_CALL
sandesha2_property_bean_is_exp_backoff(
sandesha2_property_bean_t *bean,
const axutil_env_t *env)
{
return bean->is_exp_backoff;
}
axis2_status_t AXIS2_CALL
sandesha2_property_bean_set_exp_backoff(
sandesha2_property_bean_t *bean,
const axutil_env_t *env, axis2_bool_t exp_backoff)
{
bean->is_exp_backoff = exp_backoff;
return AXIS2_SUCCESS;
}
axis2_char_t* AXIS2_CALL
sandesha2_property_bean_get_storage_mgr(
sandesha2_property_bean_t *bean,
const axutil_env_t *env)
{
return bean->storage_mgr;
}
axis2_status_t AXIS2_CALL
sandesha2_property_bean_set_storage_mgr(
sandesha2_property_bean_t *bean,
const axutil_env_t *env,
axis2_char_t *manager)
{
AXIS2_PARAM_CHECK(env->error, manager, AXIS2_FAILURE);
bean->storage_mgr = axutil_strdup(env, manager);
return AXIS2_SUCCESS;
}
axis2_bool_t AXIS2_CALL
sandesha2_property_bean_is_in_order(
sandesha2_property_bean_t *bean,
const axutil_env_t *env)
{
return bean->is_in_order;
}
axis2_status_t AXIS2_CALL
sandesha2_property_bean_set_in_order(
sandesha2_property_bean_t *bean,
const axutil_env_t *env, axis2_bool_t in_order)
{
bean->is_in_order = in_order;
return AXIS2_SUCCESS;
}
axutil_array_list_t* AXIS2_CALL
sandesha2_property_bean_get_msg_types_to_drop(
sandesha2_property_bean_t *bean,
const axutil_env_t *env)
{
return bean->msg_types_to_drop;
}
axis2_status_t AXIS2_CALL
sandesha2_property_bean_set_msg_types_to_drop(
sandesha2_property_bean_t *bean,
const axutil_env_t *env,
axutil_array_list_t *msg_types)
{
AXIS2_PARAM_CHECK(env->error, msg_types, AXIS2_FAILURE);
bean->msg_types_to_drop = msg_types;
return AXIS2_SUCCESS;
}
axis2_status_t AXIS2_CALL
sandesha2_property_bean_add_msg_type_to_drop(
sandesha2_property_bean_t *bean,
const axutil_env_t *env,
int msg_type)
{
int *_msg_type = NULL;
if(!bean->msg_types_to_drop)
return AXIS2_FAILURE;
_msg_type = AXIS2_MALLOC(env->allocator, sizeof(int));
axutil_array_list_add(bean->msg_types_to_drop, env, _msg_type);
return AXIS2_SUCCESS;
}
int AXIS2_CALL
sandesha2_property_bean_get_max_retrans_count (
sandesha2_property_bean_t *bean,
const axutil_env_t *env)
{
return bean->max_retrans_count;
}
axis2_status_t AXIS2_CALL
sandesha2_property_bean_set_max_retrans_count(
sandesha2_property_bean_t *bean,
const axutil_env_t *env, int count)
{
bean->max_retrans_count = count;
return AXIS2_SUCCESS;
}
int AXIS2_CALL
sandesha2_property_bean_get_terminate_delay (
sandesha2_property_bean_t *bean,
const axutil_env_t *env)
{
return bean->terminate_delay;
}
axis2_status_t AXIS2_CALL
sandesha2_property_bean_set_terminate_delay(
sandesha2_property_bean_t *bean,
const axutil_env_t *env,
int delay)
{
bean->terminate_delay = delay;
return AXIS2_SUCCESS;
}
axis2_char_t *AXIS2_CALL
sandesha2_property_bean_get_db_path(
sandesha2_property_bean_t *bean,
const axutil_env_t *env)
{
return bean->db_path;
}
axis2_status_t AXIS2_CALL
sandesha2_property_bean_set_db_path(
sandesha2_property_bean_t *bean,
const axutil_env_t *env,
axis2_char_t *db_path)
{
bean->db_path = axutil_strdup(env, db_path);
return AXIS2_SUCCESS;
}
int AXIS2_CALL
sandesha2_property_bean_get_polling_delay (
sandesha2_property_bean_t *bean,
const axutil_env_t *env)
{
return bean->polling_delay;
}
axis2_status_t AXIS2_CALL
sandesha2_property_bean_set_polling_delay(
sandesha2_property_bean_t *bean,
const axutil_env_t *env,
int delay)
{
bean->polling_delay = delay;
return AXIS2_SUCCESS;
}