您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ switch_channel_event_set_data函数代码示例

51自学网 2021-06-03 08:34:58
  C++
这篇教程C++ switch_channel_event_set_data函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中switch_channel_event_set_data函数的典型用法代码示例。如果您正苦于以下问题:C++ switch_channel_event_set_data函数的具体用法?C++ switch_channel_event_set_data怎么用?C++ switch_channel_event_set_data使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了switch_channel_event_set_data函数的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: my_on_reporting

static switch_status_t my_on_reporting(switch_core_session_t *session){	switch_channel_t *channel = switch_core_session_get_channel(session);	switch_status_t status = SWITCH_STATUS_SUCCESS;	const char *template_str = NULL;	char *expanded_vars = NULL, *sql = NULL;	if (globals.shutdown) {		return SWITCH_STATUS_SUCCESS;	}	if (!((globals.legs & CDR_LEG_A) && (globals.legs & CDR_LEG_B))) {		if ((globals.legs & CDR_LEG_A)) {			if (switch_channel_get_originator_caller_profile(channel)) {				return SWITCH_STATUS_SUCCESS;			}		} else {			if (switch_channel_get_originatee_caller_profile(channel)) {				return SWITCH_STATUS_SUCCESS;			}		}	}	if (globals.debug) {		switch_event_t *event;		if (switch_event_create_plain(&event, SWITCH_EVENT_CHANNEL_DATA) == SWITCH_STATUS_SUCCESS) {			char *buf;			switch_channel_event_set_data(channel, event);			switch_event_serialize(event, &buf, SWITCH_FALSE);			switch_assert(buf);			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "CHANNEL_DATA:/n%s/n", buf);			switch_event_destroy(&event);			switch_safe_free(buf);		}	}	template_str = (const char *) switch_core_hash_find(globals.template_hash, globals.default_template);	if (!template_str) {		template_str = default_template;	}	expanded_vars = switch_channel_expand_variables(channel, template_str);	if (!expanded_vars) {		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error expanding CDR variables./n");		return SWITCH_STATUS_FALSE;	}	sql = switch_mprintf("INSERT INTO %s VALUES (%s)", globals.db_table, expanded_vars);	assert(sql);	write_cdr(sql);	switch_safe_free(sql);	if (expanded_vars != template_str) {		switch_safe_free(expanded_vars);	}	return status;}
开发者ID:DrumTechnologiesLtd,项目名称:FreeSWITCH,代码行数:60,


示例2: SWITCH_DECLARE

SWITCH_DECLARE(switch_status_t) switch_core_session_set_video_write_codec(switch_core_session_t *session, switch_codec_t *codec){	switch_event_t *event;	switch_channel_t *channel = switch_core_session_get_channel(session);	char tmp[30];	switch_status_t status = SWITCH_STATUS_SUCCESS;	if (!codec || !codec->implementation || !switch_core_codec_ready(codec)) {		if (session->video_write_codec) {			session->video_write_codec = NULL;			status = SWITCH_STATUS_SUCCESS;			goto end;		}		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot set NULL codec!/n");		status = SWITCH_STATUS_FALSE;		goto end;	}	if (switch_event_create(&event, SWITCH_EVENT_CODEC) == SWITCH_STATUS_SUCCESS) {		switch_channel_event_set_data(session->channel, event);		switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "channel-video-write-codec-name", codec->implementation->iananame);		switch_event_add_header(event, SWITCH_STACK_BOTTOM, "channel-video-write-codec-rate", "%d", codec->implementation->actual_samples_per_second);		switch_event_fire(&event);	}	switch_channel_set_variable(channel, "video_write_codec", codec->implementation->iananame);	switch_snprintf(tmp, sizeof(tmp), "%d", codec->implementation->actual_samples_per_second);	switch_channel_set_variable(channel, "video_write_rate", tmp);	session->video_write_codec = codec;	session->video_write_impl = *codec->implementation;  end:	return status;}
开发者ID:hsaid,项目名称:FreeSWITCH,代码行数:35,


示例3: event_handler

static void event_handler(switch_event_t *event){	if (process_event(event) != SWITCH_STATUS_SUCCESS) {		const char *peer_uuid = switch_event_get_header(event, "variable_signal_bond");		switch_core_session_t *peer_session = NULL;		switch_channel_t *peer_channel = NULL;		switch_event_t *peer_event = NULL;				if (!peer_uuid) {			return;		}		if (!(peer_session = switch_core_session_locate(peer_uuid))) {			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cant locate peer session for uuid %s/n", peer_uuid);			return;		}		peer_channel = switch_core_session_get_channel(peer_session);				if (switch_event_create(&peer_event, SWITCH_EVENT_CHANNEL_BRIDGE) != SWITCH_STATUS_SUCCESS) {			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cant create bridge event for peer channel %s/n", peer_uuid);			goto end;		}		switch_channel_event_set_data(peer_channel, peer_event);	end:		switch_core_session_rwunlock(peer_session);		if (peer_event) {			process_event(peer_event);			switch_event_destroy(&peer_event);		}	}}
开发者ID:Deepwalker,项目名称:FreeSWITCH,代码行数:35,


示例4: SWITCH_DECLARE

SWITCH_DECLARE(void) CoreSession::setEventData(Event *e){	this_check_void();	sanity_check_noreturn;		if (channel && e->event) {		switch_channel_event_set_data(channel, e->event);	}}
开发者ID:gujun,项目名称:sscore,代码行数:9,


示例5: dialplan_xml_locate

static switch_status_t dialplan_xml_locate(switch_core_session_t *session, switch_caller_profile_t *caller_profile, switch_xml_t *root,										   switch_xml_t *node){	switch_channel_t *channel = switch_core_session_get_channel(session);	switch_status_t status = SWITCH_STATUS_GENERR;	switch_event_t *params = NULL;	switch_event_create(&params, SWITCH_EVENT_REQUEST_PARAMS);	switch_assert(params);	switch_channel_event_set_data(channel, params);	switch_caller_profile_event_set_data(caller_profile, "Hunt", params);	status = switch_xml_locate("dialplan", NULL, NULL, NULL, root, node, params, SWITCH_FALSE);	switch_event_destroy(&params);	return status;}
开发者ID:DrumTechnologiesLtd,项目名称:FreeSWITCH,代码行数:16,


示例6: switch_core_media_bug_destroy

static void switch_core_media_bug_destroy(switch_media_bug_t *bug){	switch_event_t *event = NULL;	if (bug->raw_read_buffer) {		switch_buffer_destroy(&bug->raw_read_buffer);	}	if (bug->raw_write_buffer) {		switch_buffer_destroy(&bug->raw_write_buffer);	}	if (switch_event_create(&event, SWITCH_EVENT_MEDIA_BUG_STOP) == SWITCH_STATUS_SUCCESS) {		switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Media-Bug-Function", "%s", bug->function);		switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Media-Bug-Target", "%s", bug->target);		if (bug->session) switch_channel_event_set_data(bug->session->channel, event);		switch_event_fire(&event);	}}
开发者ID:benlangfeld,项目名称:FreeSWITCH,代码行数:19,


示例7: my_on_reporting

static switch_status_t my_on_reporting(switch_core_session_t *session){	switch_channel_t *channel = switch_core_session_get_channel(session);	switch_status_t status = SWITCH_STATUS_SUCCESS;	const char *log_dir = NULL, *accountcode = NULL, *a_template_str = NULL, *g_template_str = NULL;	char *log_line, *path = NULL;	if (globals.shutdown) {		return SWITCH_STATUS_SUCCESS;	}	if (!((globals.legs & CDR_LEG_A) && (globals.legs & CDR_LEG_B))) {		if ((globals.legs & CDR_LEG_A)) {			if (switch_channel_get_originator_caller_profile(channel)) {				return SWITCH_STATUS_SUCCESS;			}		} else {			if (switch_channel_get_originatee_caller_profile(channel)) {				return SWITCH_STATUS_SUCCESS;			}		}	}	if (!(log_dir = switch_channel_get_variable(channel, "cdr_csv_base"))) {		log_dir = globals.log_dir;	}	if (switch_dir_make_recursive(log_dir, SWITCH_DEFAULT_DIR_PERMS, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) {		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error creating %s/n", log_dir);		return SWITCH_STATUS_FALSE;	}	if (globals.debug) {		switch_event_t *event;		if (switch_event_create_plain(&event, SWITCH_EVENT_CHANNEL_DATA) == SWITCH_STATUS_SUCCESS) {			char *buf;			switch_channel_event_set_data(channel, event);			switch_event_serialize(event, &buf, SWITCH_FALSE);			switch_assert(buf);			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "CHANNEL_DATA:/n%s/n", buf);			switch_event_destroy(&event);			free(buf);		}	}	g_template_str = (const char *) switch_core_hash_find(globals.template_hash, globals.default_template);	if ((accountcode = switch_channel_get_variable(channel, "ACCOUNTCODE"))) {		a_template_str = (const char *) switch_core_hash_find(globals.template_hash, accountcode);	}	if (!g_template_str) {		g_template_str =			"/"${accountcode}/",/"${caller_id_number}/",/"${destination_number}/",/"${context}/",/"${caller_id}/",/"${channel_name}/",/"${bridge_channel}/",/"${last_app}/",/"${last_arg}/",/"${start_stamp}/",/"${answer_stamp}/",/"${end_stamp}/",/"${duration}/",/"${billsec}/",/"${hangup_cause}/",/"${amaflags}/",/"${uuid}/",/"${userfield}/";";	}	if (!a_template_str) {		a_template_str = g_template_str;	}	log_line = switch_channel_expand_variables(channel, a_template_str);	if ((accountcode) && (!globals.masterfileonly)) {		path = switch_mprintf("%s%s%s.csv", log_dir, SWITCH_PATH_SEPARATOR, accountcode);		assert(path);		write_cdr(path, log_line);		free(path);	}	if (g_template_str != a_template_str) {		if (log_line != a_template_str) {			switch_safe_free(log_line);		}		log_line = switch_channel_expand_variables(channel, g_template_str);	}	if (!log_line) {		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error creating cdr/n");		return SWITCH_STATUS_FALSE;	}	path = switch_mprintf("%s%sMaster.csv", log_dir, SWITCH_PATH_SEPARATOR);	assert(path);	write_cdr(path, log_line);	free(path);	if (log_line != g_template_str) {		free(log_line);	}	return status;}
开发者ID:kgrofelnik,项目名称:mod_portaudio-endpoints,代码行数:93,


示例8: SWITCH_DECLARE

//.........这里部分代码省略.........	if (flags & SMBF_READ_REPLACE) {		switch_thread_rwlock_wrlock(session->bug_rwlock);		for (bp = session->bugs; bp; bp = bp->next) {			if (switch_test_flag(bp, SMBF_READ_REPLACE)) {				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Only one bug of this type allowed!/n");				switch_thread_rwlock_unlock(session->bug_rwlock);				return SWITCH_STATUS_GENERR;			}		}		switch_thread_rwlock_unlock(session->bug_rwlock);	}#endif	if (!(bug = switch_core_session_alloc(session, sizeof(*bug)))) {		return SWITCH_STATUS_MEMERR;	}	bug->callback = callback;	bug->user_data = user_data;	bug->session = session;	bug->flags = flags;	bug->function = "N/A";	bug->target = "N/A";	switch_core_session_get_read_impl(session, &bug->read_impl);	switch_core_session_get_write_impl(session, &bug->write_impl);	if (function) {		bug->function = switch_core_session_strdup(session, function);	}	if (target) {		bug->target = switch_core_session_strdup(session, target);	}		bug->stop_time = stop_time;	bytes = bug->read_impl.decoded_bytes_per_packet;	if (!bug->flags) {		bug->flags = (SMBF_READ_STREAM | SMBF_WRITE_STREAM);	}	if (switch_test_flag(bug, SMBF_READ_STREAM) || switch_test_flag(bug, SMBF_READ_PING)) {		switch_buffer_create_dynamic(&bug->raw_read_buffer, bytes * SWITCH_BUFFER_BLOCK_FRAMES, bytes * SWITCH_BUFFER_START_FRAMES, MAX_BUG_BUFFER);		switch_mutex_init(&bug->read_mutex, SWITCH_MUTEX_NESTED, session->pool);	}	bytes = bug->write_impl.decoded_bytes_per_packet;	if (switch_test_flag(bug, SMBF_WRITE_STREAM)) {		switch_buffer_create_dynamic(&bug->raw_write_buffer, bytes * SWITCH_BUFFER_BLOCK_FRAMES, bytes * SWITCH_BUFFER_START_FRAMES, MAX_BUG_BUFFER);		switch_mutex_init(&bug->write_mutex, SWITCH_MUTEX_NESTED, session->pool);	}	if ((bug->flags & SMBF_THREAD_LOCK)) {		bug->thread_id = switch_thread_self();	}	if (bug->callback) {		switch_bool_t result = bug->callback(bug, bug->user_data, SWITCH_ABC_TYPE_INIT);		if (result == SWITCH_FALSE) {			switch_core_media_bug_destroy(bug);			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error attaching BUG to %s/n",							  switch_channel_get_name(session->channel));			return SWITCH_STATUS_GENERR;		}	}	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Attaching BUG to %s/n", switch_channel_get_name(session->channel));	bug->ready = 1;	switch_thread_rwlock_wrlock(session->bug_rwlock);	bug->next = session->bugs;	session->bugs = bug;	for(bp = session->bugs; bp; bp = bp->next) {		if (bp->ready && !switch_test_flag(bp, SMBF_TAP_NATIVE_READ) && !switch_test_flag(bp, SMBF_TAP_NATIVE_WRITE)) {			tap_only = 0;		}		}	switch_thread_rwlock_unlock(session->bug_rwlock);	*new_bug = bug;	if (tap_only) {		switch_set_flag(session, SSF_MEDIA_BUG_TAP_ONLY);	} else {		switch_clear_flag(session, SSF_MEDIA_BUG_TAP_ONLY);	}	if (switch_event_create(&event, SWITCH_EVENT_MEDIA_BUG_START) == SWITCH_STATUS_SUCCESS) {		switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Media-Bug-Function", "%s", bug->function);		switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Media-Bug-Target", "%s", bug->target);		switch_channel_event_set_data(session->channel, event);		switch_event_fire(&event);	}	return SWITCH_STATUS_SUCCESS;}
开发者ID:benlangfeld,项目名称:FreeSWITCH,代码行数:101,


示例9: my_on_reporting

static switch_status_t my_on_reporting(switch_core_session_t *session){    switch_channel_t *channel = switch_core_session_get_channel(session);    switch_status_t status = SWITCH_STATUS_SUCCESS;    char *values = NULL, *tmp = NULL, *pq_var = NULL;    const char *var = NULL;    cdr_field_t *cdr_field = NULL;    switch_size_t len, offset;    if (globals.shutdown) {        return SWITCH_STATUS_SUCCESS;    }    if (!((globals.legs & CDR_LEG_A) && (globals.legs & CDR_LEG_B))) {        if ((globals.legs & CDR_LEG_A)) {            if (switch_channel_get_originator_caller_profile(channel)) {                return SWITCH_STATUS_SUCCESS;            }        } else {            if (switch_channel_get_originatee_caller_profile(channel)) {                return SWITCH_STATUS_SUCCESS;            }        }    }    if (switch_dir_make_recursive(globals.spool_dir, SWITCH_DEFAULT_DIR_PERMS, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) {        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error creating %s/n", globals.spool_dir);        return SWITCH_STATUS_FALSE;    }    if (globals.debug) {        switch_event_t *event;        if (switch_event_create(&event, SWITCH_EVENT_COMMAND) == SWITCH_STATUS_SUCCESS) {            char *buf;            switch_channel_event_set_data(channel, event);            switch_event_serialize(event, &buf, SWITCH_FALSE);            switch_assert(buf);            switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "CHANNEL_DATA:/n%s/n", buf);            switch_event_destroy(&event);            switch_safe_free(buf);        }    }    switch_zmalloc(values, 1);    offset = 0;    for (cdr_field = globals.db_schema->fields; cdr_field->var_name; cdr_field++) {        if ((var = switch_channel_get_variable(channel, cdr_field->var_name))) {            /* Allocate sufficient buffer for PQescapeString */            len = strlen(var);            tmp = switch_core_session_alloc(session, len * 2 + 1);            PQescapeString(tmp, var, len);            var = tmp;        }        if (cdr_field->quote) {            if ((cdr_field->not_null == SWITCH_FALSE) && zstr(var)) {                pq_var = switch_mprintf("null,", var);            } else {                pq_var = switch_mprintf("'%s',", var);            }        } else {            pq_var = switch_mprintf("%s,", var);        }        /* Resize values buffer to accomodate next var */        len = strlen(pq_var);        tmp = realloc(values, offset + len);        values = tmp;        memcpy(values + offset, pq_var, len);        switch_safe_free(pq_var);        offset += len;    }    *(values + --offset) = '/0';    insert_cdr(values);    switch_safe_free(values);    return status;}
开发者ID:publicreading,项目名称:FreeSWITCH,代码行数:80,



注:本文中的switch_channel_event_set_data函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ switch_channel_get_name函数代码示例
C++ switch_assert函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。