コード例 #1
0
ファイル: unimrcp_client.c プロジェクト: odmanV2/freecenter
/** Create factory of signaling agents */
static mrcp_sa_factory_t* unimrcp_client_sa_factory_create(unimrcp_client_loader_t *loader, const apr_xml_elem *elem)
{
	mrcp_sa_factory_t *sa_factory = NULL;
	mrcp_sig_agent_t *sig_agent;
	char *uac_name;
	char *state;
	char *uac_list_str = apr_pstrdup(loader->pool,cdata_text_get(elem));
	do {
		uac_name = apr_strtok(uac_list_str, ",", &state);
		if(uac_name) {
			sig_agent = mrcp_client_signaling_agent_get(loader->client,uac_name);
			if(sig_agent) {
				if(!sa_factory)
					sa_factory = mrcp_sa_factory_create(loader->pool);

				mrcp_sa_factory_agent_add(sa_factory,sig_agent);
			}
			else {
				apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown UAC Name <%s>",uac_name);
			}
		}
		uac_list_str = NULL; /* make sure we pass NULL on subsequent calls of apr_strtok() */
	}
	while(uac_name);
	return sa_factory;
}
コード例 #2
0
ファイル: unimrcp_client.c プロジェクト: Jared-Prime/UniMRCP
/** Load MRCPv2 profile */
static apt_bool_t unimrcp_client_mrcpv2_profile_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root, const char *id)
{
	const apr_xml_elem *elem;
	mrcp_profile_t *profile;
	mrcp_sig_agent_t *sip_agent = NULL;
	mrcp_connection_agent_t *mrcpv2_agent = NULL;
	mpf_engine_t *media_engine = NULL;
	mpf_termination_factory_t *rtp_factory = NULL;
	mpf_rtp_settings_t *rtp_settings = NULL;
	mrcp_sig_settings_t *sip_settings = NULL;

	apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading MRCPv2 Profile <%s>",id);
	for(elem = root->first_child; elem; elem = elem->next) {
		apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name);

		if(is_cdata_valid(elem) == FALSE) {
			continue;
		}

		if(strcasecmp(elem->name,"sip-uac") == 0) {
			sip_agent = mrcp_client_signaling_agent_get(loader->client,cdata_text_get(elem));
		}
		else if(strcasecmp(elem->name,"mrcpv2-uac") == 0) {
			mrcpv2_agent = mrcp_client_connection_agent_get(loader->client,cdata_text_get(elem));
		}
		else if(strcasecmp(elem->name,"media-engine") == 0) {
			media_engine = mrcp_client_media_engine_get(loader->client,cdata_text_get(elem));
		}
		else if(strcasecmp(elem->name,"rtp-factory") == 0) {
			rtp_factory = mrcp_client_rtp_factory_get(loader->client,cdata_text_get(elem));
		}
		else if(strcasecmp(elem->name,"sip-settings") == 0) {
			sip_settings = mrcp_client_signaling_settings_get(loader->client,cdata_text_get(elem));
		}
		else if(strcasecmp(elem->name,"rtp-settings") == 0) {
			rtp_settings = mrcp_client_rtp_settings_get(loader->client,cdata_text_get(elem));
		}
		else {
			apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name);
		}
	}

	apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create MRCPv2 Profile [%s]",id);
	profile = mrcp_client_profile_create(
		NULL,sip_agent,mrcpv2_agent,
		media_engine,rtp_factory,
		rtp_settings,sip_settings,
		loader->pool);
	return mrcp_client_profile_register(loader->client,profile,id);
}