AXIS2_EXTERN int AXIS2_CALL
axis2_amqp_util_get_in_desc_conf_value_int(
    axis2_transport_in_desc_t* in_desc,
    const axutil_env_t* env,
    const axis2_char_t* param_name)
{
    axis2_char_t* value_str = NULL;
    int value = AXIS2_QPID_NULL_CONF_INT;

    value_str = axis2_amqp_util_get_in_desc_conf_value_string(in_desc, env, param_name);
    if(value_str)
    {
        value = atoi(value_str);
    }

    return value;
}
AXIS2_EXTERN axis2_status_t AXIS2_CALL
axis2_amqp_receiver_init(
    axis2_transport_receiver_t* receiver,
    const axutil_env_t* env,
    axis2_conf_ctx_t* conf_ctx,
    axis2_transport_in_desc_t* in_desc)
{
    axis2_amqp_receiver_resource_pack_t* receiver_resource_pack = NULL;
    axutil_property_t* property = NULL;
    const axis2_char_t* broker_ip = NULL;
    int* broker_port = (int*)AXIS2_MALLOC(env->allocator, sizeof(int));
    *broker_port = AXIS2_QPID_NULL_CONF_INT;

    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);

    receiver_resource_pack = AXIS2_AMQP_RECEIVER_TO_RESOURCE_PACK(receiver);
    receiver_resource_pack->conf_ctx = conf_ctx;

    /* Set broker IP */
    broker_ip = axis2_amqp_util_get_in_desc_conf_value_string(in_desc, env,
        AXIS2_AMQP_CONF_QPID_BROKER_IP);
    if(!broker_ip)
    {
        broker_ip = AXIS2_QPID_DEFAULT_BROKER_IP;
    }
    property = axutil_property_create_with_args(env, AXIS2_SCOPE_APPLICATION, 0, 0,
        (void*)broker_ip);
    axis2_conf_ctx_set_property(receiver_resource_pack->conf_ctx, env,
        AXIS2_AMQP_CONF_CTX_PROPERTY_BROKER_IP, property);

    /* Set broker port */
    *broker_port = axis2_amqp_util_get_in_desc_conf_value_int(in_desc, env,
        AXIS2_AMQP_CONF_QPID_BROKER_PORT);
    if(*broker_port == AXIS2_QPID_NULL_CONF_INT)
    {
        *broker_port = AXIS2_QPID_DEFAULT_BROKER_PORT;
    }
    property = axutil_property_create_with_args(env, AXIS2_SCOPE_APPLICATION, 0, 0,
        (void*)broker_port);
    axis2_conf_ctx_set_property(receiver_resource_pack->conf_ctx, env,
        AXIS2_AMQP_CONF_CTX_PROPERTY_BROKER_PORT, property);

    return AXIS2_SUCCESS;
}