crtmpserver常用基本类介绍

上一篇我们做了流程的分析,这一篇我们对其中涉及到的类做一个梳理,两篇可以结合着一起看,对整个程序的运行是有帮助的。

BaseClientApplication APP基类,一切APP都基于这个类

StreamsManager _streamsManager;
可以对该APP所属的流链接进行管理

map<uint64_t, BaseAppProtocolHandler *> _protocolsHandlers;
这个APP所支持的协议

BaseProtocol 协议基类,一切协议都基于这个类,例如BaseHTTPProtocol和BaseRTMPProtocol

BaseClientApplication *_pApplication;
该协议所属的APP

BaseProtocol *_pFarProtocol;
远端协议

BaseProtocol *_pNearProtocol;
//表示到服务器的远近[outside world --->ssl--->http--->rtmp--->server]

//离服务器最近的是rtmp协议,最远的为ssl

BaseRTMPProtocol   RTMP协议运算基类

IOBuffer _outputBuffer;
协议的交互buffer

BaseRTMPAppProtocolHandler *_pProtocolHandler;
所属的协议事务类

BaseStream *_streams[MAX_STREAMS_COUNT]; 这边是一个连接对象允许请求256次流?

LinkedListNode<BaseOutNetRTMPStream *> *_pSignaledRTMPOutNetStream;
输出流集合

BaseAppProtocolHandler APP处理协议事务基类,--->BaseRTMPAppProtocolHandler--->RTMPAppProtocolHandler

BaseClientApplication *_pApplication;
可以找到所属的APP

对于基本的协议交互,BaseRTMPAppProtocolHandler已经足够使用,继承于它的RTMPAppProtocolHandler只不过增加一些特定的扩展应用。同理,BaseRTSPAppProtocolHandler,对于比较简单的协议比如ssl和http,大部分功能都在BaseAppProtocolHandler,只需要重载实现部分接口就可以了。而对于调用者来说,构造一个RTMPAppProtocolHandler和HTTPAppProtocolHandler即可支持两种协议的事务处理

BaseRTMPAppProtocolHandler  继承于BaseAppProtocolHandler

map<uint32_t, BaseRTMPProtocol *> _connections;
协议基础类的支持?

StreamsManager 流链接管理

BaseClientApplication *_pApplication;
所属APP

BaseStream 流处理基类

BaseProtocol *_pProtocol;
所属协议

StreamsManager *_pStreamsManager;
反向查询流管理

BaseInStream --->BaseStream 流输入类

map<uint32_t, BaseOutStream *> _linkedStreams;
对应的流输出集合

BaseOutStream --->BaseStream 流输出类

BaseInStream *_pInStream;
流的输入对象

InNetRTMPStream --->BaseInNetStream --->BaseInStream
RTMP 流发布时创建的,用于管理流输入,在这个类中做流分发处理

IOBuffer _videoCodecInit;
对应的视频流缓冲

IOBuffer _audioCodecInit;
对应的音频流缓冲

IOHandler 处理IO交互,网络相关,TCPAcceptor,TCPCarrier,TCPConnector...

BaseProtocol *_pProtocol;
所属的交互协议,RTMP/HTTP/RTSP...

IOHandlerType _type;
标识本IO的处理类型,参见IOHandlerType,ACCEPT/CONNECT/TCP/UDP

TCPAcceptor TCP监听器

BaseClientApplication *_pApplication;

IOHandlerManager IO交互管理,程序入口为这个类

static map<uint32_t, IOHandler *> _activeIOHandlers;
有效IO

static map<uint32_t, IOHandler *> _deadIOHandlers;
无效IO

ProtocolManager Protocol协议交互管理

ClientApplicationManager APP管理

ProtocolFactoryManager 协议工厂,包含本程序所支持的协议,貌似跟配置文件无关,有25种协议

crtmpserver常用基本类介绍

时间: 2024-11-05 06:26:24

crtmpserver常用基本类介绍的相关文章

转:maven常用命令介绍

mvn 3.0.4 创建maven项目命令 mvn  archetype:generate   -DgroupId=damocles-autocredit -DartifactId=damocles-autocredit  -DarchetypeArtifactId=maven-archetype-quickstart     -DinteractiveMode=false  -X 1 下载源代码:mvn dependency:sources -DdownloadSources=true -Dd

Notepad++前端开发常用插件介绍

Notepad++前端开发常用插件介绍 Notepad++除了自身的功能强大之外,更是有许多非常的优秀的插件,下面就总结一下前端开发过程一些比较常用的插件. Emmet Emmet的前身是Zen Coding,一款使用仿CSS选择器的语法来快速开发HTML和CSS的插件,是前端开发神器.它无视了编辑器的自动提示和自动完成,秒杀了你自定义的各种快捷键或者 AHK 的热字符串,以智能简洁高效的缩短输入,带给你超快速地书写各种复杂而枯燥的 HTML 和 CSS 代码的体验.现在可以在Notepad++

webpack基础+webpack配置文件常用配置项介绍+webpack-dev-server

一.webpack基础 1.在项目中生成package.json:在项目根目录中输入npm init,根据提示输入相应信息.(也可以不生成package.json文件,但是package.json是很有用的,所有建议生成) 2.安装webpaack a.在全局中安装webpack:npm install webpack -g b.将webpack安装到项目并将webpack写入package.json的devDependencies中:进入项目根目录,然后在命令行中输入npm install w

keepalived高可用的常用功能介绍

Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器.本篇文章会介绍keepalived的安装,配置,还有keepalived的一些脚本,keepalived+nginx高可用实现和keepalived双机互为主从的实现. keep

debug常用命令介绍(学习汇编)

显示所有寄存器内容 格式:-r  功能:以十六进制形式显示cpu内部个寄存器的值:以符号形式显示标志寄存器的各标志位(除tf外)的值:并将CS:IP所指的内存内容反汇编成一条指令,可视为将要执行的指令.如: -r   回车AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000DS=0AF0  ES=0AF0  SS=0AF0  CS=0AF0  IP=0200   NV UP EI PL NZ NA PO NC

网络方面的常用命令 &amp; 常用端口介绍

在网络方面我们常常会用到如下命令: (1)ping命令:我们常常用来判断2台或2台以上的机器间是否网络连通. ping 192.168.1.88 -t 如果想看任何命令的参数是什么意思,我们只需要:命令 /?就可以查看该命令的用法了.如下图: (2)ipconfig命令:往往是用来查看我们计算机的IP.网关.子网掩码.DNS等信息 ipconfig -all (3)netstat命令:查看本地计算机的TCP和UDP端口是否监听 netstat -a (4)telnet命令: 1)telnet提供

Grafana、collectd 和 InfluxDB 打造酷炫监控系统(四)常用插件介绍和自定义数据篇

一.常用插件介绍 获取指定端口的连接状态ESTABLISHED.CLOSE_WAIT.LISTEN等 tcpconns: <Plugin tcpconns> ListeningPorts false LocalPort "80" RemotePort "80" </Plugin> 获取Nginx的状态 nginx: <Plugin nginx> URL "http://test.tt.com/NginxStatus&qu

C#文件读写常用类介绍

首先要熟悉.NET中处理文件和文件夹的操作.File类和Directory类是其中最主要的两个类.了解它们将对后面功能的实现提供很大的便利.      本节先对和文件系统相关的两个.NET类进行简要介绍.  System.IO.File类和System.IO.FileInfo类主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间.下面通过程序实例来介绍其主要属性和方法.  (1) 文件打开方法:File.Open () 该方法的声明如下: public static FileS

Dreamweaver简明手册——常用功能介绍

1.概述 Dreamweaver 是一款集网页制作和管理网站于一身的所见即所得网页编辑器,在开发前端视图页面的时候,用这个工具,能让代码更清晰化,界面更整洁,可以大大的提升Web前端开发效率.基于数通畅联的AEAI DP开发平台可以直接生成JSP前端页面,通常在AEAI DP中使用JSP编辑器编辑JSP页面,但是JSP编辑器强于在JSP页面上写JAVA代码片段,但调整页面里的表单元素以及CSS样式等不方便,因此,一般采用AEAI D跟Dreamweaver配合进行前端JSP页面扩展开发.本文对D