
由于cfg 是结构体,还是需要将源码放在这里,便于后面使用参数时查阅
static pjsua_app_cfg_t cfg; //application configuration
typedef struct pjsua_app_cfg_t
{
int argc;//The number of runtime arguments passed to the application.
char **argv;//The array of arguments string passed to the application.
void (*on_started)(pj_status_t status, const char* title);
//Tell app that library request to stopped/restart.
void (*on_stopped)(pj_bool_t restart, int argc, char** argv);
void (*on_config_init)(pjsua_app_config *cfg);//extra configuration
} pjsua_app_cfg_t;
上一节分析了 pjsua_app 的main 入口分析,最后还有pjsua_app_init、pjsua_app_run 、pjsua_app_destroy 没有分析,这一篇主要展开pjsua_app_init(&cfg)
在pjsua_app 中进行初始化操作,首先进行cfg的内存拷贝,之前已经将argc、argv、on_started、on_stopped 初始化过,这里讲cfg 数据拷贝到app_cfg ,然后就是app_init 因为没有用到cli,就只分析app_init
pj_status_t pjsua_app_init(const pjsua_app_cfg_t *cfg)
{
pj_memcpy(&app_cfg, cfg, sizeof(app_cfg));
//memcpy(dst, src, size);
//src所指的内存地址的起始位置开始,拷贝n个字节的数据到目标dest所指的内存地址的起始位置
/*
1)src和dest所指内存区域不能重叠,函数返回指向dest的指针。如果src和dest以任何形式出现了重叠,它的结果是未定义的。
2)与strcpy相比,memcpy遇到’\0’不结束,而且一定会复制完n个字节。
3)如果目标数组本身已有数据,执行memcpy之后,将覆盖原有数据(最多覆盖n个)。
如果要追加数据,则每次执行memcpy()后,要将目标地址增加到要追加数据的地址。
4)source和destin都不一定是数组,任意的可读写的空间均可。
*/
status = app_init(); //接下来要分析
/* Init CLI if configured */
PJ_LOG(4,(THIS_FILE, "app_config use_cli = %d",app_config.use_cli));
//这他么哪里冒出来的app_config.use_cli 来看一下
if (app_config.use_cli) {
status = cli_init();
}
return status;
}
pjsua_app_config app_config;
//初始化了但是app_config.use_cli 应该为false
//所以这里只走app_init
/* Pjsua application data */
typedef struct pjsua_app_config
{
pjsua_config cfg;
pjsua_logging_config log_cfg;
pjsua_media_config media_cfg;
pj_bool_t no_refersub;
pj_bool_t ipv6;
pj_bool_t enable_qos;
pj_bool_t no_tcp;
pj_bool_t no_udp;
pj_bool_t use_tls;
pjsua_transport_config udp_cfg;
pjsua_transport_config rtp_cfg;
pjsip_redirect_op redir_op;
unsigned acc_cnt;
pjsua_acc_config acc_cfg[PJSUA_MAX_ACC];
unsigned buddy_cnt;
pjsua_buddy_config buddy_cfg[PJSUA_MAX_BUDDIES];
app_call_data call_data[PJSUA_MAX_CALLS];
pj_pool_t *pool;
/* Compatibility with older pjsua */
/* AVI to play */
/* CLI setting */
pj_bool_t use_cli;
cli_cfg_t cli_cfg;
} pjsua_app_config;
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-67841-1.html
进入一级战备状态以捍卫国家主权