static apt_bool_t recog_pending_requests_remove(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *request_message, mrcp_message_t *response_message) { apt_list_elem_t *elem; mrcp_message_t *pending_message; mrcp_request_id_list_t *request_id_list = NULL; mrcp_generic_header_t *generic_header = mrcp_generic_header_get(request_message); mrcp_generic_header_t *response_generic_header = mrcp_generic_header_prepare(response_message); if(generic_header && mrcp_generic_header_property_check(request_message,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST) == TRUE) { if(generic_header->active_request_id_list.count) { /* selective STOP request */ request_id_list = &generic_header->active_request_id_list; } } elem = apt_list_first_elem_get(state_machine->queue); while(elem) { pending_message = apt_list_elem_object_get(elem); if(!request_id_list || active_request_id_list_find(generic_header,pending_message->start_line.request_id) == TRUE) { apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Remove Pending RECOGNIZE Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", MRCP_MESSAGE_SIDRES(pending_message), pending_message->start_line.request_id); elem = apt_list_elem_remove(state_machine->queue,elem); /* append active id list */ active_request_id_list_append(response_generic_header,pending_message->start_line.request_id); } else { /* speak request remains in the queue, just proceed to the next one */ elem = apt_list_next_elem_get(state_machine->queue,elem); } } if(response_generic_header->active_request_id_list.count) { mrcp_generic_header_property_add(response_message,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST); } return TRUE; }
static apt_bool_t rtsp_client_request_pop(rtsp_client_connection_t *rtsp_connection, rtsp_message_t *response, rtsp_message_t **ret_request, rtsp_client_session_t **ret_session) { rtsp_client_session_t *session; apt_list_elem_t *elem = apt_list_first_elem_get(rtsp_connection->inprogress_request_queue); while(elem) { session = apt_list_elem_object_get(elem); if(session->active_request && session->active_request->header.cseq == response->header.cseq) { if(ret_session) { *ret_session = session; } if(ret_request) { *ret_request = session->active_request; } apt_log(RTSP_LOG_MARK,APT_PRIO_INFO,"Pop In-Progress RTSP Request " APT_PTR_FMT " CSeq:%"APR_SIZE_T_FMT, session, response->header.cseq); apt_list_elem_remove(rtsp_connection->inprogress_request_queue,elem); session->active_request = NULL; apt_timer_kill(session->request_timer); return TRUE; } elem = apt_list_next_elem_get(rtsp_connection->inprogress_request_queue,elem); } return FALSE; }
APT_DECLARE(apt_bool_t) apt_test_framework_run(apt_test_framework_t *framework, int argc, const char * const *argv) { apt_test_suite_t *suite = NULL; apt_list_elem_t *elem = apt_list_first_elem_get(framework->suites); if(argc == 1) { apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Run All Test Suites"); /* walk through the list of test suites and run all of them */ while(elem) { suite = apt_list_elem_object_get(elem); if(suite) { /* run test suite with the default arguments */ apt_test_framework_suite_run(framework,suite,0,NULL); } elem = apt_list_next_elem_get(framework->suites,elem); } } else { /* walk through the list of test suites find appropriate one and run it */ apt_bool_t found = FALSE; apt_str_t name; apt_string_set(&name,argv[1]); while(elem) { suite = apt_list_elem_object_get(elem); if(suite && apt_string_compare(&suite->name,&name) == TRUE) { found = TRUE; break; } elem = apt_list_next_elem_get(framework->suites,elem); } if(found == TRUE) { /* run test suite with remaining arguments */ apt_test_framework_suite_run(framework,suite,argc-2,&argv[2]); } else { apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No Such Test Suite [%s] to Run", argv[1]); } } return TRUE; }
static mrcp_connection_t* mrcp_client_agent_connection_find(mrcp_connection_agent_t *agent, mrcp_control_descriptor_t *descriptor) { apr_sockaddr_t *sockaddr; mrcp_connection_t *connection = NULL; apt_list_elem_t *elem = apt_list_first_elem_get(agent->connection_list); /* walk through the list of connections */ while(elem) { connection = apt_list_elem_object_get(elem); if(connection) { if(apr_sockaddr_info_get(&sockaddr,descriptor->ip.buf,APR_INET,descriptor->port,0,connection->pool) == APR_SUCCESS) { if(apr_sockaddr_equal(sockaddr,connection->sockaddr) != 0) { return connection; } } } elem = apt_list_next_elem_get(agent->connection_list,elem); } return NULL; }
static mrcp_connection_t* mrcp_connection_find(mrcp_connection_agent_t *agent, const apt_str_t *remote_ip) { mrcp_connection_t *connection = NULL; apt_list_elem_t *elem; if(!agent || !agent->connection_list || !remote_ip) { return NULL; } elem = apt_list_first_elem_get(agent->connection_list); /* walk through the list of connections */ while(elem) { connection = apt_list_elem_object_get(elem); if(connection) { if(apt_string_compare(&connection->remote_ip,remote_ip) == TRUE) { return connection; } } elem = apt_list_next_elem_get(agent->connection_list,elem); } return NULL; }