美文网首页
【freeswitch常用函数】switch_event_cre

【freeswitch常用函数】switch_event_cre

作者: 安安爸Chris | 来源:发表于2019-06-09 11:56 被阅读0次

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*是复制来的,需要调用者自己释放

相关文章

网友评论

      本文标题:【freeswitch常用函数】switch_event_cre

      本文链接:https://www.haomeiwen.com/subject/sfbgxctx.html