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結束等待250syesno

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狀態及信息)後續處理yesno

2.7 關閉Janus

Created with Raphaël 2.2.0關閉Janus啓用事件處理機制?發送Janus關閉通知關閉所有事件處理器釋放所有加載的Plugin釋放所有加載的Transport釋放其它相關佔用資源後續處理yesno

3. 參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章