blob: d9361e5dbbbb80313c85b9d3ef87fbb87749f35e [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 <axiom.h>
#include <platforms/axutil_platform_auto_sense.h>
#include <axis2_endpoint_ref.h>
#include <savan_subscriber.h>
#include <savan_util.h>
#include <savan_error.h>
struct savan_subscriber_t
{
axis2_char_t *id;
axis2_endpoint_ref_t *end_to;
axis2_endpoint_ref_t *notify_to;
axis2_char_t *delivery_mode;
axis2_char_t *expires;
axis2_char_t *filter;
axis2_bool_t renewed;
axis2_char_t *filter_dialect;
};
AXIS2_EXTERN savan_subscriber_t * AXIS2_CALL
savan_subscriber_create(
const axutil_env_t *env)
{
savan_subscriber_t *subscriber = NULL;
subscriber = AXIS2_MALLOC(env->allocator, sizeof(savan_subscriber_t));
if (!subscriber)
{
AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
return NULL;
}
subscriber->id = NULL;
subscriber->end_to = NULL;
subscriber->notify_to = NULL;
subscriber->delivery_mode = NULL;
subscriber->expires = NULL;
subscriber->filter = NULL;
subscriber->filter_dialect = NULL;
subscriber->renewed = AXIS2_FALSE;
return subscriber;
}
AXIS2_EXTERN void AXIS2_CALL
savan_subscriber_free_void_arg(
void *subscriber,
const axutil_env_t *env)
{
savan_subscriber_t *subs = (savan_subscriber_t *) subscriber;
savan_subscriber_free(subs, env);
}
AXIS2_EXTERN void AXIS2_CALL
savan_subscriber_free(
savan_subscriber_t *subscriber,
const axutil_env_t *env)
{
if(subscriber->id)
{
AXIS2_FREE(env->allocator, subscriber->id);
}
if(subscriber->delivery_mode)
{
AXIS2_FREE(env->allocator, subscriber->delivery_mode);
}
if(subscriber->expires)
{
AXIS2_FREE(env->allocator, subscriber->expires);
}
if(subscriber->filter)
{
AXIS2_FREE(env->allocator, subscriber->filter);
}
if(subscriber->filter_dialect)
{
AXIS2_FREE(env->allocator, subscriber->filter_dialect);
}
AXIS2_FREE(env->allocator, subscriber);
}
AXIS2_EXTERN axis2_char_t * AXIS2_CALL
savan_subscriber_get_id(
savan_subscriber_t *subscriber,
const axutil_env_t *env)
{
return subscriber->id;
}
AXIS2_EXTERN axis2_status_t AXIS2_CALL
savan_subscriber_set_id(
savan_subscriber_t *subscriber,
const axutil_env_t *env,
const axis2_char_t *id)
{
/* If id is already set, free it */
if (subscriber->id)
{
AXIS2_FREE(env->allocator, subscriber->id);
subscriber->id = NULL;
}
/* copy the new id */
subscriber->id = axutil_strdup(env, id);
return AXIS2_SUCCESS;
}
AXIS2_EXTERN axis2_status_t AXIS2_CALL
savan_subscriber_set_filter_dialect
(savan_subscriber_t *subscriber,
const axutil_env_t *env,
const axis2_char_t *filter_dialect)
{
if(subscriber->filter_dialect)
{
AXIS2_FREE(env->allocator, subscriber->filter_dialect);
subscriber->filter_dialect = NULL;
}
subscriber->filter_dialect = axutil_strdup(env, filter_dialect);
return AXIS2_SUCCESS;
}
AXIS2_EXTERN axis2_char_t * AXIS2_CALL
savan_subscriber_get_filter_dialect(
savan_subscriber_t *subscriber,
const axutil_env_t *env)
{
return subscriber->filter_dialect;
}
AXIS2_EXTERN axis2_status_t AXIS2_CALL
savan_subscriber_set_end_to(
savan_subscriber_t *subscriber,
const axutil_env_t *env,
axis2_endpoint_ref_t *end_to)
{
subscriber->end_to = end_to;
return AXIS2_SUCCESS;
}
AXIS2_EXTERN axis2_endpoint_ref_t *AXIS2_CALL
savan_subscriber_get_end_to(
savan_subscriber_t *subscriber,
const axutil_env_t *env)
{
return subscriber->end_to;
}
AXIS2_EXTERN axis2_status_t AXIS2_CALL
savan_subscriber_set_notify_to(
savan_subscriber_t *subscriber,
const axutil_env_t *env,
axis2_endpoint_ref_t *notify_to)
{
subscriber->notify_to = notify_to;
return AXIS2_SUCCESS;
}
AXIS2_EXTERN axis2_endpoint_ref_t *AXIS2_CALL
savan_subscriber_get_notify_to(
savan_subscriber_t *subscriber,
const axutil_env_t *env)
{
return subscriber->notify_to;
}
AXIS2_EXTERN axis2_status_t AXIS2_CALL
savan_subscriber_set_delivery_mode(
savan_subscriber_t *subscriber,
const axutil_env_t *env,
const axis2_char_t *mode)
{
/* if already set, free it */
if (subscriber->delivery_mode)
{
AXIS2_FREE(env->allocator, subscriber->delivery_mode);
subscriber->delivery_mode = NULL;
}
/* copy the new one */
subscriber->delivery_mode = axutil_strdup(env, mode);
return AXIS2_SUCCESS;
}
AXIS2_EXTERN axis2_char_t * AXIS2_CALL
savan_subscriber_get_delivery_mode(
savan_subscriber_t *subscriber,
const axutil_env_t *env)
{
return subscriber->delivery_mode;
}
AXIS2_EXTERN axis2_status_t AXIS2_CALL
savan_subscriber_set_expires(
savan_subscriber_t *subscriber,
const axutil_env_t *env,
const axis2_char_t *expires)
{
/* if already set, free it */
if (subscriber->expires)
{
AXIS2_FREE(env->allocator, subscriber->expires);
subscriber->expires = NULL;
}
/* copy the new one */
subscriber->expires = axutil_strdup(env, expires);
return AXIS2_SUCCESS;
}
AXIS2_EXTERN axis2_char_t * AXIS2_CALL
savan_subscriber_get_expires(
savan_subscriber_t *subscriber,
const axutil_env_t *env)
{
return subscriber->expires;
}
AXIS2_EXTERN axis2_status_t AXIS2_CALL
savan_subscriber_set_filter(
savan_subscriber_t *subscriber,
const axutil_env_t *env,
const axis2_char_t *filter)
{
/* if already set, free it */
if (subscriber->filter)
{
AXIS2_FREE(env->allocator, subscriber->filter);
subscriber->filter = NULL;
}
/* copy the new one */
subscriber->filter = axutil_strdup(env, filter);
return AXIS2_SUCCESS;
}
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
savan_subscriber_get_filter(
savan_subscriber_t *subscriber,
const axutil_env_t *env)
{
return subscriber->filter;
}
AXIS2_EXTERN axis2_status_t AXIS2_CALL
savan_subscriber_set_renew_status(
savan_subscriber_t *subscriber,
const axutil_env_t *env,
axis2_bool_t renewed)
{
subscriber->renewed = renewed;
return AXIS2_SUCCESS;
}
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
savan_subscriber_get_renew_status(
savan_subscriber_t *subscriber,
const axutil_env_t *env)
{
return subscriber->renewed;
}