static apt_bool_t mrcp_app_control_message_raise(mrcp_client_session_t *session, mrcp_channel_t *channel, mrcp_message_t *mrcp_message) { if(mrcp_message->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) { mrcp_app_message_t *response; mrcp_message_t *mrcp_request; if(!session->active_request || !session->active_request->control_message) { return FALSE; } response = mrcp_client_app_response_create(session->active_request,0,session->base.pool); mrcp_request = session->active_request->control_message; mrcp_message->start_line.method_id = mrcp_request->start_line.method_id; mrcp_message->start_line.method_name = mrcp_request->start_line.method_name; response->control_message = mrcp_message; apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Raise App MRCP Response "APT_NAMESID_FMT, MRCP_SESSION_NAMESID(session)); session->application->handler(response); session->active_request = apt_list_pop_front(session->request_queue); if(session->active_request) { mrcp_app_request_dispatch(session,session->active_request); } } else if(mrcp_message->start_line.message_type == MRCP_MESSAGE_TYPE_EVENT) { mrcp_app_message_t *app_message; app_message = mrcp_client_app_control_message_create(session->base.pool); app_message->control_message = mrcp_message; app_message->application = session->application; app_message->session = &session->base; app_message->channel = channel; apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Raise App MRCP Event "APT_NAMESID_FMT, MRCP_SESSION_NAMESID(session)); session->application->handler(app_message); } return TRUE; }
apt_bool_t mrcp_app_control_task_msg_signal(mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message) { mrcp_client_session_t *client_session = (mrcp_client_session_t*)session; mrcp_application_t *application = client_session->application; apt_task_t *task = apt_consumer_task_base_get(application->client->task); apt_task_msg_t *task_msg = apt_task_msg_acquire(application->msg_pool); if(task_msg) { mrcp_app_message_t **slot = ((mrcp_app_message_t**)task_msg->data); mrcp_app_message_t *app_message; task_msg->type = MRCP_CLIENT_APPLICATION_TASK_MSG; app_message = mrcp_client_app_control_message_create(session->pool); app_message->application = client_session->application; app_message->session = session; app_message->channel = channel; app_message->control_message = message; *slot = app_message; } return apt_task_msg_signal(task,task_msg); }