/** 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 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_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; }