Janus源码分析(2)——主入口main

1. 主入口main位置

主入口main函数位于 janus.c 文件中

特别说明:

  • 通过 Makefile.am 创建依赖文件:cmdline.hcmdline.cversion.c
  • 版本号、编译时间及Git源码版本:janus_versionjanus_version_stringjanus_build_git_timejanus_build_git_sha
    等相关信息是在编译时生成到version.c中的。

在这里插入图片描述

2. Janus启动过程

Created with Raphaël 2.2.0 开始 解析命令行参数 解析配置文件参数 校验命令行参数并覆盖配置参数 获取配置参数 初始化Janus 启动处理线程及初始化线程池 加载所有组件 启动Janus成功 停止Janus? 关闭Janus 结束 等待250s yes no

2.1 校验命令行参数并覆盖配置参数

Created with Raphaël 2.2.0 校验命令行参数并覆盖配置参数 校验命令行参数日志输出到控制台 校验命令行参数日志输出到文件 校验命令行参数后台运行 后台运行处理(守护进程) 初始化日志 校验命令行参数日志级别 校验命令行参数PID文件参数 校验命令行其它参数并覆盖相关配置 后续处理

2.2 获取配置参数

Created with Raphaël 2.2.0 获取配置参数 获取日志或Debug配置参数 获取WebRTC加密配置参数 获取ICE强制列表 获取ICE忽略列表 获取网卡对应的IP地址 获取服务器名称配置参数 获取并校验自定义Session超时时间 获取并校验回收Session超时时间 获取Candidate超时时间 获取API调用密码 获取管理员API调用密码 获取基于认证机制的Token参数并初始化 获取OpaqueID配置参数 获取录像配置参数 获取是否隐藏依赖配置参数 获取IPv6配置参数 获取RTP端口范围配置参数 获取ICE配置参数 获取STUN配置参数 获取NAT配置参数 获取TURN配置参数 获取事件循环配置参数 获取Nice调试参数 若没有STUN或TURN服务器则获取本地IP 获取Nack最大队列数 获取没有媒体定时器参数 获取TWCC间隔参数 获取是否支持RFC4588参数 获取OpenSSL配置参数 获取DTLS-SRTP配置参数 后续处理

2.3 初始化Janus

Created with Raphaël 2.2.0 初始化Janus 初始化ICE 初始化STUN 初始化TURN 初始化SSL并加载所有的算法

2.4 启动处理线程及初始化线程池

Created with Raphaël 2.2.0 启动处理线程及初始化线程池 启动Session处理线程 启动请求处理线程 创建异步请求处理线程池 后续处理

2.5 加载所有组件

Created with Raphaël 2.2.0 加载所有组件 加载所有事件处理器 加载所有插件 加载所有Transport 后续处理

2.6 启动Janus完成

Created with Raphaël 2.2.0 启动Janus完成 Janus启动完成后通知上级应用 启用事件处理机制? 发送Janus启动通知(Janus状态及信息) 后续处理 yes no

2.7 关闭Janus

Created with Raphaël 2.2.0 关闭Janus 启用事件处理机制? 发送Janus关闭通知 关闭所有事件处理器 释放所有加载的Plugin 释放所有加载的Transport 释放其它相关占用资源 后续处理 yes no

3. 参考资料

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值