static apt_bool_t test_stream_generate(mrcp_generator_t *generator, mrcp_message_t *message) { char buffer[500]; apt_text_stream_t stream; mrcp_stream_result_e result; apt_bool_t continuation; mrcp_generator_message_set(generator,message); do { apt_text_stream_init(&stream,buffer,sizeof(buffer)-1); continuation = FALSE; result = mrcp_generator_run(generator,&stream); if(result == MRCP_STREAM_MESSAGE_COMPLETE) { stream.text.length = stream.pos - stream.text.buf; *stream.pos = '\0'; apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Generated MRCP Stream [%lu bytes]\n%s",stream.text.length,stream.text.buf); } else if(result == MRCP_STREAM_MESSAGE_TRUNCATED) { *stream.pos = '\0'; apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Generated MRCP Stream [%lu bytes] continuation awaiting\n%s",stream.text.length,stream.text.buf); continuation = TRUE; } else { apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Generate MRCP Stream"); } } while(continuation == TRUE); return TRUE; }
static apt_bool_t mrcp_client_agent_messsage_send(mrcp_connection_agent_t *agent, mrcp_control_channel_t *channel, mrcp_message_t *message) { apt_bool_t status = FALSE; mrcp_connection_t *connection = channel->connection; apt_text_stream_t stream; apt_message_status_e result; if(!connection || !connection->sock) { apt_obj_log(APT_LOG_MARK,APT_PRIO_WARNING,channel->log_obj,"Null MRCPv2 Connection "APT_SIDRES_FMT,MRCP_MESSAGE_SIDRES(message)); mrcp_client_agent_request_cancel(agent,channel,message); return FALSE; } do { apt_text_stream_init(&stream,connection->tx_buffer,connection->tx_buffer_size); result = mrcp_generator_run(connection->generator,message,&stream); if(result != APT_MESSAGE_STATUS_INVALID) { stream.text.length = stream.pos - stream.text.buf; *stream.pos = '\0'; apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,channel->log_obj,"Send MRCPv2 Data %s [%"APR_SIZE_T_FMT" bytes]\n%.*s", connection->id, stream.text.length, connection->verbose == TRUE ? stream.text.length : 0, stream.text.buf); if(apr_socket_send(connection->sock,stream.text.buf,&stream.text.length) == APR_SUCCESS) { status = TRUE; } else { apt_obj_log(APT_LOG_MARK,APT_PRIO_WARNING,channel->log_obj,"Failed to Send MRCPv2 Data %s", connection->id); } } else { apt_obj_log(APT_LOG_MARK,APT_PRIO_WARNING,channel->log_obj,"Failed to Generate MRCPv2 Data %s", connection->id); } } while(result == APT_MESSAGE_STATUS_INCOMPLETE); if(status == TRUE) { channel->active_request = message; if(channel->request_timer && agent->request_timeout) { apt_timer_set(channel->request_timer,agent->request_timeout); } } else { mrcp_client_agent_request_cancel(agent,channel,message); } return status; }
static apt_bool_t mrcp_client_agent_messsage_send(mrcp_connection_agent_t *agent, mrcp_control_channel_t *channel, mrcp_message_t *message) { apt_bool_t status = FALSE; mrcp_connection_t *connection = channel->connection; apt_text_stream_t *stream; mrcp_stream_result_e result; if(!connection || !connection->sock) { apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No MRCPv2 Connection"); return FALSE; } stream = &connection->tx_stream; mrcp_generator_message_set(connection->generator,message); do { apt_text_stream_init(&connection->tx_stream,connection->tx_buffer,sizeof(connection->tx_buffer)-1); result = mrcp_generator_run(connection->generator,stream); if(result == MRCP_STREAM_MESSAGE_COMPLETE || result == MRCP_STREAM_MESSAGE_TRUNCATED) { stream->text.length = stream->pos - stream->text.buf; *stream->pos = '\0'; apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Send MRCPv2 Stream %s [%lu bytes]\n%s", connection->id, stream->text.length, stream->text.buf); if(apr_socket_send(connection->sock,stream->text.buf,&stream->text.length) == APR_SUCCESS) { status = TRUE; } else { apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Send MRCPv2 Stream"); } } else { apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Generate MRCPv2 Stream"); } } while(result == MRCP_STREAM_MESSAGE_TRUNCATED); if(status == FALSE) { mrcp_message_t *response = mrcp_response_create(message,message->pool); response->start_line.method_id = message->start_line.method_id; response->start_line.method_name = message->start_line.method_name; response->start_line.status_code = MRCP_STATUS_CODE_METHOD_FAILED; mrcp_connection_message_receive(agent->vtable,channel,response); } return TRUE; }
static apt_bool_t mrcp_server_agent_messsage_send(mrcp_connection_agent_t *agent, mrcp_connection_t *connection, mrcp_message_t *message) { apt_bool_t status = FALSE; apt_text_stream_t *stream; mrcp_stream_result_e result; if(!connection || !connection->sock) { apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No MRCPv2 Connection"); return FALSE; } stream = &connection->tx_stream; mrcp_generator_message_set(connection->generator,message); do { apt_text_stream_init(&connection->tx_stream,connection->tx_buffer,sizeof(connection->tx_buffer)-1); result = mrcp_generator_run(connection->generator,stream); if(result == MRCP_STREAM_MESSAGE_COMPLETE || result == MRCP_STREAM_MESSAGE_TRUNCATED) { stream->text.length = stream->pos - stream->text.buf; *stream->pos = '\0'; apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Send MRCPv2 Stream %s [%lu bytes]\n%s", connection->id, stream->text.length, stream->text.buf); if(apr_socket_send(connection->sock,stream->text.buf,&stream->text.length) == APR_SUCCESS) { status = TRUE; } else { apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Send MRCPv2 Stream"); } } else { apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Generate MRCPv2 Stream"); } } while(result == MRCP_STREAM_MESSAGE_TRUNCATED); return status; }
static apt_bool_t mrcp_server_agent_messsage_send(mrcp_connection_agent_t *agent, mrcp_connection_t *connection, mrcp_message_t *message) { apt_bool_t status = FALSE; apt_text_stream_t stream; apt_message_status_e result; if(!connection || !connection->sock) { apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Null MRCPv2 Connection "APT_SIDRES_FMT,MRCP_MESSAGE_SIDRES(message)); return FALSE; } do { apt_text_stream_init(&stream,connection->tx_buffer,connection->tx_buffer_size); result = mrcp_generator_run(connection->generator,message,&stream); if(result != APT_MESSAGE_STATUS_INVALID) { stream.text.length = stream.pos - stream.text.buf; *stream.pos = '\0'; apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Send MRCPv2 Data %s [%"APR_SIZE_T_FMT" bytes]\n%.*s", connection->id, stream.text.length, connection->verbose == TRUE ? stream.text.length : 0, stream.text.buf); if(apr_socket_send(connection->sock,stream.text.buf,&stream.text.length) == APR_SUCCESS) { status = TRUE; } else { apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Send MRCPv2 Data"); } } else { apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Generate MRCPv2 Data"); } } while(result == APT_MESSAGE_STATUS_INCOMPLETE); return status; }