Exemplo n.º 1
0
static apt_bool_t mrcp_client_msg_process(apt_task_t *task, apt_task_msg_t *msg)
{
	apt_consumer_task_t *consumer_task = apt_task_object_get(task);
	mrcp_client_t *client = apt_consumer_task_object_get(consumer_task);
	if(!client) {
		return FALSE;
	}
	switch(msg->type) {
		case MRCP_CLIENT_SIGNALING_TASK_MSG:
		{
			const sig_agent_task_msg_data_t *sig_message = (const sig_agent_task_msg_data_t*)msg->data;
			apt_log(APT_PRIO_DEBUG,"Receive Signaling Task Message [%d]", msg->sub_type);
			switch(msg->sub_type) {
				case SIG_AGENT_TASK_MSG_ANSWER:
					mrcp_client_session_answer_process(sig_message->session,sig_message->descriptor);
					break;
				case SIG_AGENT_TASK_MSG_TERMINATE_RESPONSE:
					mrcp_client_session_terminate_response_process(sig_message->session);
					break;
				case SIG_AGENT_TASK_MSG_CONTROL_RESPONSE:
					mrcp_client_session_control_response_process(sig_message->session,sig_message->message);
					break;
				case SIG_AGENT_TASK_MSG_TERMINATE_EVENT:
					mrcp_client_session_terminate_event_process(sig_message->session);
					break;
				default:
					break;
			}
			break;
		}
		case MRCP_CLIENT_CONNECTION_TASK_MSG:
		{
			const connection_agent_task_msg_data_t *data = (const connection_agent_task_msg_data_t*)msg->data;
			apt_log(APT_PRIO_DEBUG,"Receive Connection Task Message [%d]", msg->sub_type);
			switch(msg->sub_type) {
				case CONNECTION_AGENT_TASK_MSG_ADD_CHANNEL:
					mrcp_client_on_channel_modify(data->channel,data->descriptor);
					break;
				case CONNECTION_AGENT_TASK_MSG_MODIFY_CHANNEL:
					mrcp_client_on_channel_modify(data->channel,data->descriptor);
					break;
				case CONNECTION_AGENT_TASK_MSG_REMOVE_CHANNEL:
					mrcp_client_on_channel_remove(data->channel);
					break;
				case CONNECTION_AGENT_TASK_MSG_RECEIVE_MESSAGE:
					mrcp_client_on_message_receive(data->channel,data->message);
					break;
				default:
					break;
			}
			break;
		}
		case MRCP_CLIENT_MEDIA_TASK_MSG:
		{
			mpf_message_t *mpf_message = (mpf_message_t*) msg->data;
			apt_log(APT_PRIO_DEBUG,"Receive Media Task Message [%d]", mpf_message->command_id);
			mrcp_client_mpf_message_process(mpf_message);
			break;
		}
		case MRCP_CLIENT_APPLICATION_TASK_MSG:
		{
			mrcp_app_message_t **app_message = (mrcp_app_message_t**) msg->data;
			apt_log(APT_PRIO_DEBUG,"Receive Application Task Message [%d]", (*app_message)->message_type);
			mrcp_client_app_message_process(*app_message);
			break;
		}
		default:
		{
			apt_log(APT_PRIO_WARNING,"Receive Unknown Task Message [%d]", msg->type);
			break;
		}
	}
	return TRUE;
}
apt_bool_t mrcp_client_on_disconnect(mrcp_channel_t *channel)
{
	mrcp_client_session_t *session = (mrcp_client_session_t*)channel->session;
	return mrcp_client_session_terminate_event_process(session);
}