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;
}