DSS 代码分析【服务器架构】
DSS流媒体服务器是由一个父进程构成的,这个父进程分叉出一个子进程,该子进程就是核心服务器。父进程会等待子进程的退出。如果子进程错误退出,则父进程就会分叉出一个新的子进程。
核心服务器的作用是充当网络客户和服务器模块的接口,其中网络客户使用RTP和RTSP协议来发送请求和接收响应,而服务器模块则负责处理请求和向客户端发送数据包。
DarwinStreaming Server中定义了一个Task类。Task类有两个典型的方法,一个是Signal,一个是Run。调用Signal把一个Task加入到TaskThread的Task队列中,等待完成,Run就是完成一个任务的handle。基于Task类,定义了三种类型的Task,分别是IdleTask,TimeoutTask,以及普通的Task
在Darwin Streaming Server中,除了主线程以外,有三种类型的线程,分别是TaskThread,EventThread以及IdleTaskThread:
- TaskThread,TaskThread通过运行Task类型对象的Run方法来完成相应Task的处理。典型的Task类型是RTSPSession和RTPSession。TaskThread的个数是可配置的,缺省情况下TaskThread的个数与处理器的个数一致。等待被TaskThread调用并运行的Task放在队列或者堆中。
- EventThread,EventThread负责侦听套接口事件,在DarwinStreaming Server中,有两种被侦听的事件,分别是建立RTSP连接请求的到达和RTSP请求的到达。对于RTSP连接请求的事件,EventThread建立一个RTSPSession,并启动针对相应的socket的侦听。对于RTSP请求的事件,EventThread把对应的RTSPSession类型的Task加入到TaskThread的队列中,等待RTSP请求被处理。
- IdleTaskThread,IdleTaskThread管理IdleTask类型对象的队列,根据预先设定的定时器触发IdleTask的调度。TCPListenerSocket就是一个IdleTask的派生类,当并发连接数达到设定的最大值时,会把派生自TCPListenerSocket的RTSPListenerSocket加入到IdleTaskThread管理的IdleTask队列中,暂时停止对RTSP端口的侦听,直到被设定好的定时器触发。
TaskThreadàTask; //TaskThread 负责处理Task任务
EventThreadàEventContext; //EventThread负责处理EventContext中注册的事件
IdleTaskThreadàIdleTask //IdleTaskThread负责处理IdleTask任务
DSS 代码分析【服务器架构】相关推荐
- DSS 代码分析【启动、初始化流程】
DSS加载module及和module交互的流程,如下: (1).DSS在fork子进程后调用StartServer启动服务 调用OS.OSThread.Socket.SocketUtils.QTSS ...
- 深度解析:服务器架构和技术变革
文章重点分析服务器架构组成.5G对服务器带来的技术变革(计算边界.场景等),边缘计算.云计算对服务器要求(边缘服务器.AI服务器和云服务器),服务器(白牌机.开源服务器,硬件重构和软件定义)和服务器重 ...
- 无服务器架构 - 从使用场景分析其6大特性
2019独角兽企业重金招聘Python工程师标准>>> 无服务器架构 - 从使用场景分析其6大特性 博客分类: 架构 首先我应该提到,"无服务器"技术肯定有服务器 ...
- 服务器和微内核系统哪个好,分析微内核架构操作系统优缺点
<分析微内核架构操作系统优缺点>由会员分享,可在线阅读,更多相关<分析微内核架构操作系统优缺点(2页珍藏版)>请在人人文库网上搜索. 1.分析微内核架构操作系统优缺点一 优点: ...
- BT源代码学习心得(七):跟踪服务器(Tracker)的代码分析(HTTP协议处理对象) -- 转贴自 wolfenstein (NeverSayNever)
BT源代码学习心得(七):跟踪服务器(Tracker)的代码分析(HTTP协议处理对象) author: wolfenstein (NeverSayNever) 上次我们分析了Tracker类初始化的 ...
- BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化) -- 转贴自 wolfenstein (NeverSayNever)
BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化) author:wolfenstein Tracker在BT中是一个很重要的部分.这个名词我注意到以前的文章中都是直接引用,没 ...
- BT源代码学习心得(八):跟踪服务器(Tracker)的代码分析(用户请求的实际处理) - 转贴自 wolfenstein (NeverSayNever)
BT源代码学习心得(八):跟踪服务器(Tracker)的代码分析(用户请求的实际处理) author: wolfenstein 通过上一次的分析,我们已经知道了Tracker采用http协议和客户端通 ...
- BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化)
BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化) 发信人: wolfenstein (NeverSayNever), 个人文集 标 题: BT源代码学习心得(六):跟踪服务 ...
- SRS流媒体服务器架构设计及源码分析丨音视频开发丨C/C++音视频丨Android开发丨嵌入式开发
SRS流媒体服务器架构设计及源码分析 1.SRS流媒体服务器架构设计 2.协程-连接之间的关系 3.推流-转发-拉流之间的关系 4.如何手把手调试SRS源码 视频讲解如下,点击观看: SRS流媒体服务 ...
最新文章
- Linux文件系统:概览(思维导图)
- 哪怕你不认可,我还是要为R语言正名
- python开发环境配置config_manjaro与python开发环境配置
- python培训班那家好-python培训班那个好?
- display属性_CSS之使用display:inline-block来布局
- c语言不被O2优化,【图片】今天写几个性能测试,为什么C语言跑得这么慢呢??【c语言吧】_百度贴吧...
- asp.net配置IIS过程错误解决
- A Zero Flow Entry Expiration Timeout P4 Switch
- 知乎高赞:985计算机视觉毕业后找不到工作怎么办?
- OpenGL着色器程序解析--初识着色器
- 安卓开发颜色以及对应代码(转载)
- 利用Python编写脚本批量下载公众号中的音频
- 逆向工程实验——lab8(C/C++反逆向、Java字节码反逆向)
- 【vue】在vue,vue cli中拼接字符串,拼接图片链接
- 前锋html5费用,足坛转会费最高的5位前锋,1.05亿欧元仅第5,第1比C罗还高1.22亿...
- 【深度首发】灵犀微光CEO郑昱:十万片级AR光学引擎的量产之路丨Xtecher 封面
- 无线路由器首次配置、修改WiFi名称和密码—— Cisco实验/家里实验
- wordpress添加媒体_如何在WordPress中添加精选内容滑块
- 电脑基础知识-电脑不认新硬盘时该怎么办?
- 基于FTTH组网的qinq业务的配置