static void mrcp_server_on_terminate_complete(apt_task_t *task) { apt_consumer_task_t *consumer_task = apt_task_object_get(task); mrcp_server_t *server = apt_consumer_task_object_get(consumer_task); mrcp_resource_engine_t *resource_engine; apr_dso_handle_t *plugin; apr_hash_index_t *it; void *val; apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Close Resource Engines"); it=apr_hash_first(server->pool,server->resource_engine_table); for(; it; it = apr_hash_next(it)) { apr_hash_this(it,NULL,NULL,&val); resource_engine = val; if(resource_engine) { mrcp_resource_engine_close(resource_engine); } } apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Unload Plugins"); it=apr_hash_first(server->pool,server->plugin_table); for(; it; it = apr_hash_next(it)) { apr_hash_this(it,NULL,NULL,&val); plugin = val; if(plugin) { apr_dso_unload(plugin); } } apt_log(APT_LOG_MARK,APT_PRIO_INFO,"On Server Task Terminate"); }
static void demo_framework_on_terminate_request(apt_task_t *task) { /*TODO::send terminate to all demo_application*/ apt_consumer_task_t *consumer_task = apt_task_object_get(task); demo_framework_t *framework = apt_consumer_task_object_get(consumer_task); demo_application_t** appp = (demo_application_t**)mrcp_client_application_get(framework->client, "recog"); demo_application_t* app = *appp; app->handler(app, NULL); /* apt_task_msg_t *task_msg = apt_task_msg_get(task); mrcp_app_message_t *app_message = apr_palloc(framework->pool, sizeof(mrcp_app_message_t)); app_message->message_type = MRCP_APP_MESSAGE_TYPE_SIGNALING; app_message->sig_message.message_type = MRCP_SIG_MESSAGE_TYPE_EVENT; app_message->sig_message.event_id = MRCP_SIG_EVENT_TERMINATE; if(task_msg) { framework_task_data_t *framework_task_data = (framework_task_data_t*)task_msg->data; task_msg->type = TASK_MSG_USER; task_msg->sub_type = DEMO_APPLICATION_MSG_ID; framework_task_data->app_message = app_message; framework_task_data->demo_application = app; apt_task_msg_signal(task,task_msg); }*/ }
static void mrcp_client_on_start_complete(apt_task_t *task) { apt_consumer_task_t *consumer_task = apt_task_object_get(task); mrcp_client_t *client = apt_consumer_task_object_get(consumer_task); void *val; mrcp_application_t *application; mrcp_app_message_t *app_message; apr_hash_index_t *it; apt_log(APT_PRIO_INFO,"On Client Task Start"); it = apr_hash_first(client->pool,client->app_table); for(; it; it = apr_hash_next(it)) { apr_hash_this(it,NULL,NULL,&val); application = val; if(!application) continue; /* raise one-time ready event */ app_message = apr_palloc(client->pool,sizeof(mrcp_app_message_t)); app_message->message_type = MRCP_APP_MESSAGE_TYPE_SIGNALING; app_message->sig_message.message_type = MRCP_SIG_MESSAGE_TYPE_EVENT; app_message->sig_message.event_id = MRCP_SIG_EVENT_READY; app_message->sig_message.status = MRCP_SIG_STATUS_CODE_SUCCESS; app_message->application = application; application->handler(app_message); } }
apt_bool_t UmcProcessMsg(apt_task_t *pTask, apt_task_msg_t *pMsg) { if(pMsg->type != TASK_MSG_USER) return FALSE; apt_consumer_task_t* pConsumerTask = (apt_consumer_task_t*) apt_task_object_get(pTask); UmcFramework* pFramework = (UmcFramework*) apt_consumer_task_object_get(pConsumerTask); UmcTaskMsg* pUmcMsg = (UmcTaskMsg*) pMsg->data; switch(pMsg->sub_type) { case UMC_TASK_CLIENT_MSG: { static const mrcp_app_message_dispatcher_t applicationDispatcher = { AppOnSessionUpdate, AppOnSessionTerminate, AppOnChannelAdd, AppOnChannelRemove, AppOnMessageReceive, AppOnTerminateEvent, AppOnResourceDiscover }; mrcp_application_message_dispatch(&applicationDispatcher,pUmcMsg->m_pAppMessage); break; } case UMC_TASK_RUN_SESSION_MSG: { pFramework->ProcessRunRequest(pUmcMsg->m_ScenarioName,pUmcMsg->m_ProfileName); break; } case UMC_TASK_STOP_SESSION_MSG: { pFramework->ProcessStopRequest(pUmcMsg->m_SessionId); break; } case UMC_TASK_KILL_SESSION_MSG: { pFramework->ProcessKillRequest(pUmcMsg->m_SessionId); break; } case UMC_TASK_SHOW_SCENARIOS_MSG: { pFramework->ProcessShowScenarios(); break; } case UMC_TASK_SHOW_SESSIONS_MSG: { pFramework->ProcessShowSessions(); break; } case UMC_TASK_EXIT_SESSION_MSG: { pFramework->ProcessSessionExit(pUmcMsg->m_pSession); break; } } return TRUE; }
void UmcOnTerminateComplete(apt_task_t* pTask) { apt_consumer_task_t* pConsumerTask = (apt_consumer_task_t*) apt_task_object_get(pTask); UmcFramework* pFramework = (UmcFramework*) apt_consumer_task_object_get(pConsumerTask); pFramework->DestroyMrcpClient(); pFramework->DestroyScenarios(); }
void UmcOnStartComplete(apt_task_t* pTask) { apt_consumer_task_t* pConsumerTask = (apt_consumer_task_t*) apt_task_object_get(pTask); UmcFramework* pFramework = (UmcFramework*) apt_consumer_task_object_get(pConsumerTask); pFramework->CreateMrcpClient(); pFramework->LoadScenarios(); }
/** Start execution of MPF test suite scenario */ static void mpf_suite_on_start_complete(apt_task_t *task) { apt_consumer_task_t *consumer_task; mpf_suite_agent_t *agent; consumer_task = apt_task_object_get(task); agent = apt_consumer_task_object_get(consumer_task); apt_log(APT_LOG_MARK,APT_PRIO_INFO,"On MPF Suite Start"); agent->rx_session = mpf_suite_rx_session_create(agent); agent->tx_session = mpf_suite_tx_session_create(agent); }
static void mrcp_client_on_start_complete(apt_task_t *task) { apt_consumer_task_t *consumer_task = apt_task_object_get(task); mrcp_client_t *client = apt_consumer_task_object_get(consumer_task); apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,CLIENT_TASK_NAME" Started"); if(client->on_start_complete) { /* async start */ client->on_start_complete(TRUE); } else { /* sync start */ apr_thread_mutex_lock(client->sync_start_mutex); apr_thread_cond_signal(client->sync_start_object); apr_thread_mutex_unlock(client->sync_start_mutex); } }
static void mrcp_server_on_start_complete(apt_task_t *task) { apt_consumer_task_t *consumer_task = apt_task_object_get(task); mrcp_server_t *server = apt_consumer_task_object_get(consumer_task); mrcp_resource_engine_t *resource_engine; apr_hash_index_t *it; void *val; apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open Resource Engines"); it = apr_hash_first(server->pool,server->resource_engine_table); for(; it; it = apr_hash_next(it)) { apr_hash_this(it,NULL,NULL,&val); resource_engine = val; if(resource_engine) { mrcp_resource_engine_open(resource_engine); } } apt_log(APT_LOG_MARK,APT_PRIO_INFO,"On Server Task Start"); }
/** Process task messages */ static apt_bool_t mpf_suite_task_msg_process(apt_task_t *task, apt_task_msg_t *msg) { apr_size_t i; const mpf_message_t *mpf_message; apt_consumer_task_t *consumer_task = apt_task_object_get(task); mpf_suite_agent_t *agent = apt_consumer_task_object_get(consumer_task); const mpf_message_container_t *container = (const mpf_message_container_t*) msg->data; for(i=0; i<container->count; i++) { mpf_message = &container->messages[i]; if(mpf_message->message_type == MPF_MESSAGE_TYPE_RESPONSE) { mpf_suite_response_process(agent,mpf_message); } else { mpf_suite_event_process(agent,mpf_message); } } return TRUE; }
static void mrcp_server_on_terminate_request(apt_task_t *task) { apt_consumer_task_t *consumer_task = apt_task_object_get(task); mrcp_server_t *server = apt_consumer_task_object_get(consumer_task); mrcp_engine_t *engine; apr_hash_index_t *it; void *val; it = mrcp_engine_factory_engine_first(server->engine_factory); for(; it; it = apr_hash_next(it)) { apr_hash_this(it,NULL,NULL,&val); engine = val; if(engine) { if(mrcp_engine_virtual_close(engine) == TRUE) { apt_task_terminate_request_add(task); } } } }
static apt_bool_t demo_framework_msg_process(apt_task_t *task, apt_task_msg_t *msg) { if(msg->type == TASK_MSG_USER) { framework_task_data_t *data = (framework_task_data_t*)msg->data; switch(msg->sub_type) { case DEMO_APPLICATION_MSG_ID: { data->demo_application->handler(data->demo_application,data->app_message); break; } case DEMO_CONSOLE_MSG_ID: { apt_consumer_task_t *consumer_task = apt_task_object_get(task); demo_framework_t *framework = apt_consumer_task_object_get(consumer_task); demo_framework_console_msg_process(framework,data->app_name,data->profile_name); break; } } } return TRUE; }
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; }
static APR_INLINE mrcp_unirtsp_agent_t* client_agent_get(apt_task_t *task) { apt_consumer_task_t *consumer_task = apt_task_object_get(task); mrcp_unirtsp_agent_t *agent = apt_consumer_task_object_get(consumer_task); return agent; }