DSS 代码分析【服务器架构】

本文详细介绍了DSS流媒体服务器的架构组成及其工作原理。核心服务器作为网络客户与服务器模块之间的接口,处理RTP和RTSP协议的请求与响应。文章还深入探讨了Darwin Streaming Server中Task、EventThread、TaskThread及IdleTaskThread等关键组件的工作机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DSS流媒体服务器是由一个父进程构成的,这个父进程分叉出一个子进程,该子进程就是核心服务器。父进程会等待子进程的退出。如果子进程错误退出,则父进程就会分叉出一个新的子进程

核心服务器的作用是充当网络客户和服务器模块的接口,其中网络客户使用RTPRTSP协议来发送请求和接收响应,而服务器模块则负责处理请求和向客户端发送数据包



DarwinStreaming Server中定义了一个Task类。Task类有两个典型的方法,一个是Signal,一个是Run。调用Signal把一个Task加入到TaskThreadTask队列中,等待完成,Run就是完成一个任务的handle。基于Task类,定义了三种类型的Task,分别是IdleTaskTimeoutTask,以及普通的Task


Darwin Streaming Server中,除了主线程以外,有三种类型的线程,分别是TaskThreadEventThread以及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 任务


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值