static apt_bool_t mrcp_client_message_send(mrcp_client_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message) { if(!session->base.id.length) { mrcp_message_t *response = mrcp_response_create(message,message->pool); response->start_line.status_code = MRCP_STATUS_CODE_METHOD_FAILED; apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Raise App Failure MRCP Response"); mrcp_app_control_message_raise(session,channel,response); return TRUE; } message->channel_id.session_id = session->base.id; message->start_line.request_id = ++session->base.last_request_id; apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Send MRCP Request <%s@%s> [%d]", channel->resource_name->buf, session->base.id, message->start_line.request_id); if(channel->control_channel) { /* MRCPv2 */ mrcp_client_control_message_send(channel->control_channel,message); } else { /* MRCPv1 */ mrcp_session_control_request(channel->session,message); } return TRUE; }
static apt_bool_t mrcp_client_message_send(mrcp_client_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message) { if(!session->base.id.length) { mrcp_message_t *response = mrcp_response_create(message,message->pool); response->start_line.status_code = MRCP_STATUS_CODE_METHOD_FAILED; apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Raise App Failure MRCP Response "APT_NAMESID_FMT, MRCP_SESSION_NAMESID(session)); mrcp_app_control_message_raise(session,channel,response); return TRUE; } message->channel_id.session_id = session->base.id; message->start_line.request_id = ++session->base.last_request_id; apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Send MRCP Request "APT_NAMESIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", MRCP_SESSION_NAMESID(session), channel->resource->name.buf, message->start_line.request_id); if(channel->control_channel) { /* MRCPv2 */ mrcp_client_control_message_send(channel->control_channel,message); } else { /* MRCPv1 */ mrcp_session_control_request(channel->session,message); } return TRUE; }
static apt_bool_t mrcp_unirtsp_session_announce(mrcp_unirtsp_agent_t *agent, mrcp_unirtsp_session_t *session, rtsp_message_t *message) { const char *resource_name = mrcp_name_get_by_rtsp_name( agent->config->resource_map, message->start_line.common.request_line.resource_name); apt_bool_t status = TRUE; if(session && resource_name && rtsp_header_property_check(&message->header.property_set,RTSP_HEADER_FIELD_CONTENT_TYPE) == TRUE && message->header.content_type == RTSP_CONTENT_TYPE_MRCP && rtsp_header_property_check(&message->header.property_set,RTSP_HEADER_FIELD_CONTENT_LENGTH) == TRUE && message->header.content_length > 0) { apt_text_stream_t text_stream; mrcp_parser_t *parser; apt_str_t resource_name_str; text_stream.text = message->body; text_stream.pos = text_stream.text.buf; apt_string_set(&resource_name_str,resource_name); parser = mrcp_parser_create(agent->sig_agent->resource_factory,session->mrcp_session->pool); mrcp_parser_resource_name_set(parser,&resource_name_str); if(mrcp_parser_run(parser,&text_stream) == MRCP_STREAM_MESSAGE_COMPLETE) { mrcp_message_t *mrcp_message = mrcp_parser_message_get(parser); mrcp_message->channel_id.session_id = message->header.session_id; status = mrcp_session_control_request(session->mrcp_session,mrcp_message); } else { /* error response */ apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Parse MRCPv1 Message"); status = FALSE; } } else { /* error response */ status = FALSE; } return status; }