/** Create Sofia-SIP Signaling Agent */ MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_sofiasip_client_agent_create(const char *id, mrcp_sofia_client_config_t *config, apr_pool_t *pool) { apt_task_t *task; apt_task_vtable_t *vtable; mrcp_sofia_agent_t *sofia_agent; sofia_agent = apr_palloc(pool,sizeof(mrcp_sofia_agent_t)); sofia_agent->sig_agent = mrcp_signaling_agent_create(id,sofia_agent,MRCP_VERSION_2,pool); sofia_agent->sig_agent->create_client_session = mrcp_sofia_session_create; sofia_agent->root = NULL; sofia_agent->nua = NULL; if(mrcp_sofia_config_validate(sofia_agent,config,pool) == FALSE) { return NULL; } task = apt_task_create(sofia_agent,NULL,pool); if(!task) { return NULL; } apt_task_name_set(task,id); vtable = apt_task_vtable_get(task); if(vtable) { vtable->on_pre_run = mrcp_sofia_task_initialize; vtable->run = mrcp_sofia_task_run; vtable->terminate = mrcp_sofia_task_terminate; } sofia_agent->sig_agent->task = task; apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create SofiaSIP Agent [%s] ["SOFIA_SIP_VERSION"] %s", id,sofia_agent->sip_bind_str); return sofia_agent->sig_agent; }
/** Create Sofia-SIP Signaling Agent */ MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_sofiasip_server_agent_create(mrcp_sofia_server_config_t *config, apr_pool_t *pool) { apt_task_t *task; apt_task_vtable_t *vtable; mrcp_sofia_agent_t *sofia_agent; sofia_agent = apr_palloc(pool,sizeof(mrcp_sofia_agent_t)); sofia_agent->sig_agent = mrcp_signaling_agent_create(sofia_agent,MRCP_VERSION_2,pool); sofia_agent->config = config; sofia_agent->root = NULL; sofia_agent->nua = NULL; if(mrcp_sofia_config_validate(sofia_agent,config,pool) == FALSE) { return NULL; } task = apt_task_create(sofia_agent,NULL,pool); if(!task) { return NULL; } apt_task_name_set(task,SOFIA_TASK_NAME); vtable = apt_task_vtable_get(task); if(vtable) { vtable->on_pre_run = mrcp_sofia_task_initialize; vtable->run = mrcp_sofia_task_run; vtable->terminate = mrcp_sofia_task_terminate; } sofia_agent->sig_agent->task = task; apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create "SOFIA_TASK_NAME" ["SOFIA_SIP_VERSION"] %s:%hu %s", config->local_ip, config->local_port, config->transport ? config->transport : ""); return sofia_agent->sig_agent; }
/** Create Sofia-SIP Signaling Agent */ MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_sofiasip_client_agent_create(mrcp_sofia_client_config_t *config, apr_pool_t *pool) { apt_task_vtable_t vtable; mrcp_sofia_agent_t *sofia_agent; sofia_agent = apr_palloc(pool,sizeof(mrcp_sofia_agent_t)); sofia_agent->sig_agent = mrcp_signaling_agent_create(sofia_agent,MRCP_VERSION_2,pool); sofia_agent->sig_agent->create_client_session = mrcp_sofia_session_create; sofia_agent->root = NULL; sofia_agent->nua = NULL; if(mrcp_sofia_config_validate(sofia_agent,config,pool) == FALSE) { return NULL; } apt_task_vtable_reset(&vtable); vtable.on_pre_run = mrcp_sofia_task_initialize; vtable.run = mrcp_sofia_task_run; vtable.terminate = mrcp_sofia_task_terminate; sofia_agent->sig_agent->task = apt_task_create(sofia_agent,&vtable,NULL,pool); apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create Sofia SIP ["SOFIA_SIP_VERSION"] Agent %s:%hu -> %s:%hu %s", config->local_ip,config->local_port, config->remote_ip,config->remote_port, config->transport ? config->transport : ""); return sofia_agent->sig_agent; }
/** Create UniRTSP Signaling Agent */ MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_unirtsp_client_agent_create(const char *id, rtsp_client_config_t *config, apr_pool_t *pool) { apt_task_t *task; mrcp_unirtsp_agent_t *agent; agent = apr_palloc(pool,sizeof(mrcp_unirtsp_agent_t)); agent->sig_agent = mrcp_signaling_agent_create(id,agent,pool); agent->sig_agent->create_client_session = mrcp_unirtsp_session_create; agent->config = config; if(rtsp_config_validate(agent,config,pool) == FALSE) { return NULL; } agent->rtsp_client = rtsp_client_create( id, config->max_connection_count, config->request_timeout, agent, &session_response_vtable, pool); if(!agent->rtsp_client) { return NULL; } task = rtsp_client_task_get(agent->rtsp_client); agent->sig_agent->task = task; return agent->sig_agent; }
/** Create UniRTSP Signaling Agent */ MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_unirtsp_server_agent_create(const char *id, rtsp_server_config_t *config, apr_pool_t *pool) { apt_task_t *task; mrcp_unirtsp_agent_t *agent; agent = apr_palloc(pool,sizeof(mrcp_unirtsp_agent_t)); agent->sig_agent = mrcp_signaling_agent_create(id,agent,MRCP_VERSION_1,pool); agent->config = config; if(rtsp_config_validate(agent,config,pool) == FALSE) { return NULL; } agent->rtsp_server = rtsp_server_create( config->local_ip, config->local_port, config->max_connection_count, agent, &session_request_vtable, pool); if(!agent->rtsp_server) { return NULL; } task = rtsp_server_task_get(agent->rtsp_server); apt_task_name_set(task,id); agent->sig_agent->task = task; apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create UniRTSP Agent [%s] %s:%hu [%"APR_SIZE_T_FMT"]", id, config->local_ip, config->local_port, config->max_connection_count); return agent->sig_agent; }
/** Create UniRTSP Signaling Agent */ MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_unirtsp_server_agent_create(rtsp_server_config_t *config, apr_pool_t *pool) { apt_task_vtable_t vtable; apt_task_msg_pool_t *msg_pool; apt_consumer_task_t *consumer_task; mrcp_unirtsp_agent_t *agent; agent = apr_palloc(pool,sizeof(mrcp_unirtsp_agent_t)); agent->sig_agent = mrcp_signaling_agent_create(agent,MRCP_VERSION_1,pool); agent->config = config; if(rtsp_config_validate(agent,config,pool) == FALSE) { return NULL; } agent->rtsp_server = rtsp_server_create(config->local_ip,config->local_port,config->max_connection_count, agent,&session_request_vtable,pool); if(!agent->rtsp_server) { return NULL; } msg_pool = apt_task_msg_pool_create_dynamic(0,pool); apt_task_vtable_reset(&vtable); vtable.destroy = server_destroy; vtable.on_start_complete = server_on_start_complete; vtable.on_terminate_complete = server_on_terminate_complete; consumer_task = apt_consumer_task_create(agent,&vtable,msg_pool,pool); agent->sig_agent->task = apt_consumer_task_base_get(consumer_task); apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create UniRTSP Agent %s:%hu [%d]", config->local_ip, config->local_port, config->max_connection_count); return agent->sig_agent; }
/** Create Sofia-SIP Signaling Agent */ MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_sofiasip_server_agent_create(mrcp_sofia_server_config_t *config, apr_pool_t *pool) { apt_task_vtable_t vtable; mrcp_sofia_agent_t *sofia_agent; sofia_agent = apr_palloc(pool,sizeof(mrcp_sofia_agent_t)); sofia_agent->sig_agent = mrcp_signaling_agent_create(sofia_agent,MRCP_VERSION_2,pool); sofia_agent->config = config; sofia_agent->root = NULL; sofia_agent->nua = NULL; if(mrcp_sofia_config_validate(sofia_agent,config,pool) == FALSE) { return NULL; } apt_task_vtable_reset(&vtable); vtable.run = mrcp_sofia_task_run; vtable.terminate = mrcp_sofia_task_terminate; sofia_agent->sig_agent->task = apt_task_create(sofia_agent,&vtable,NULL,pool); apt_log(APT_PRIO_NOTICE,"Create Sofia SIP ["SOFIA_SIP_VERSION"] Agent %s:%hu",config->local_ip,config->local_port); return sofia_agent->sig_agent; }