in src/core/clientapi/callback_recv.c [33:79]
static axis2_status_t AXIS2_CALL axis2_callback_recv_receive(
axis2_msg_recv_t * msg_recv,
const axutil_env_t * env,
axis2_msg_ctx_t * msg_ctx,
void *callback_recv_param);
AXIS2_EXTERN axis2_callback_recv_t *AXIS2_CALL
axis2_callback_recv_create(
const axutil_env_t * env)
{
axis2_callback_recv_t *callback_recv = NULL;
AXIS2_ENV_CHECK(env, NULL);
callback_recv = AXIS2_MALLOC(env->allocator, sizeof(axis2_callback_recv_t));
if(!callback_recv)
{
AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "No memory. Cannot create callback receive.");
return NULL;
}
callback_recv->base = NULL;
callback_recv->base_deep_copy = AXIS2_TRUE;
callback_recv->callback_map = NULL;
callback_recv->mutex = NULL;
callback_recv->base = axis2_msg_recv_create(env);
if(!callback_recv->base)
{
axis2_callback_recv_free(callback_recv, env);
return NULL;
}
axis2_msg_recv_set_derived(callback_recv->base, env, callback_recv);
axis2_msg_recv_set_receive(callback_recv->base, env, axis2_callback_recv_receive);
callback_recv->callback_map = axutil_hash_make(env);
if(!callback_recv->callback_map)
{
axis2_callback_recv_free(callback_recv, env);
return NULL;
}
callback_recv->mutex = axutil_thread_mutex_create(env->allocator, AXIS2_THREAD_MUTEX_DEFAULT);
return callback_recv;
}