static axis2_status_t AXIS2_CALL axis2_addr_disp_invoke()

in src/core/engine/addr_disp.c [30:80]


static axis2_status_t AXIS2_CALL axis2_addr_disp_invoke(
    axis2_handler_t * handler,
    const axutil_env_t * env,
    struct axis2_msg_ctx *msg_ctx);

static axis2_svc_t *AXIS2_CALL axis2_addr_disp_find_svc(
    axis2_msg_ctx_t * msg_ctx,
    const axutil_env_t * env);

static axis2_op_t *AXIS2_CALL axis2_addr_disp_find_op(
    axis2_msg_ctx_t * msg_ctx,
    const axutil_env_t * env,
    axis2_svc_t * svc);

axis2_disp_t *AXIS2_CALL
axis2_addr_disp_create(
    const axutil_env_t * env)
{
    axis2_disp_t *disp = NULL;
    axis2_handler_t *handler = NULL;
    axutil_string_t *name = NULL;

    name = axutil_string_create_const(env, (axis2_char_t **)&AXIS2_ADDR_DISP_NAME);
    if(!name)
    {
        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
        return NULL;
    }

    disp = axis2_disp_create(env, name);
    if(!disp)
    {
        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
        axutil_string_free(name, env);
        return NULL;
    }

    handler = axis2_disp_get_base(disp, env);
    if(!handler)
    {
        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_INVALID_HANDLER_STATE, AXIS2_FAILURE);
        axutil_string_free(name, env);
        return NULL;
    }

    axis2_handler_set_invoke(handler, env, axis2_addr_disp_invoke);

    axutil_string_free(name, env);

    return disp;
}