【freeswitch常用函数】switch_event_create_brackets

switch_event_create_brackets
该函数在switch_event.h/switch_event.c中。

switch_event_create_brackets(char *data, char a, char b, char c, switch_event_t **event, char **new_data, switch_bool_t dup)

它是将字符串中带的key=value字符串初始化到switch_event结构体中。
所以,它会做几件事情

  1. 新建一个event(如果传入event参数为NULL)
  2. 将字符串中的key=value字符串赋值到event中
#include <switch_event.h>

int main() {
    switch_event_t *event = NULL;
    //switch_event_create(&event, SWITCH_EVENT_CLONE);
    char *parsed = NULL;
    const char *data = "{origination_uuid = 55 ca91c5 - 9783 - 458e-8 d9d - 4853 ab538f5e, sip_status = 183} test";
    char *odata = strdup(data);
    switch_status_t status = switch_event_create_brackets(odata, '{', '}', ',', &event, &parsed, SWITCH_TRUE);

    printf("the status is %d\n", status);

    free(parsed);
    free(odata);
    switch_event_destroy(&event);
    
    return 0;
}

新建的switch_event中的值,可见switch_event_create_brackets函数中创建的event id为SWITCH_EVENT_CHANNEL_DATA.

switch_event

这个event是在该函数中生成的,内存需要调用者释放。使用switch_event_destroy函数释放switch_event指针

TIPS: 如果需要在body中复制,可以使用_body=xxxx的形式赋值。

再来看一下headers里的值,
headers里的key-value键值对就是字符串里的key=value键值对


headers里的值

parsed的值就是除去参数a开始到参数b结束外的值,这里就是除去{key=value键值对}的值,也就是test。

test

这个char*是指向值,实际上不单独占有内存,所以不需要释放该指针。但是如果最后一个参数为SWITCH_TRUE,则该char*是复制来的,需要调用者自己释放

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容