以前我们做了分析过程,这一次,我们都参与了类做梳子,两个可以一起关注一下一起合并,整个方案的实施是有帮助。

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]

//离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通常使用基本类演示的更多相关文章

  1. Scala编程--基本类型和操作

    如果你熟悉Java,你会很开心地发现Java基本类型和操作符在Scala里有同样的意思.然而即使你是一位资深Java开发者,这里也仍然有一些有趣的差别使得本章值得一读.因为本章提到的一些Scala的方 ...

  2. Java基础(35):装箱与拆箱---Java 中基本类型和包装类之间的转换(Wrapper类)

    基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更加轻松便利了. 那什么是装箱 ...

  3. [转]javascript中基本类型和引用类型的区别分析

    基本类型和引用类型 ECMAScript包含两个不同类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段:引用类型值指由多个值构成的对象.当我们把变量赋值给一个变量时,解析器首先要做的就是确 ...

  4. 利用crtmpserver搭建rtmp服务器

    Google + 实践:最终直播成功. 记录一下. 这样.兴许就能够对代码进行改造,利用开源码实现:Android平台下.搭建rtmpserver.浏览器端利用flash播放视频. 代码架构为:ffm ...

  5. javascript中基本类型和引用类型的区别分析

    大多数人系统学习过的程序设计语言,在这些语言的学习过程中最早学到的几个要点之一就是值类型和引用类型的区别.下面我们来看一下在 JavaScript 中基本数据类型(Primitive Types)和引 ...

  6. Visaul Studio 常用快捷键的动画演示

    从本篇文章开始,我将会陆续介绍提高 VS 开发效率的文章,欢迎大家补充~ 在进行代码开发的时候,我们往往会频繁的使用键盘.鼠标进行协作,但是切换使用两种工具会影响到我们的开发速度,如果所有的操作都可以 ...

  7. 免费的精品: Productivity Power Tools 动画演示

    Productivity Power Tools 是微软官方推出的 Visual Studio 扩展,被用以提高开发人员生产率.它的出现一定程度上弥补和完善了 Visual Studio 自身的不足, ...

  8. Html5 快速排序演示

    快速排序(Quicksort)是对冒泡排序的一种改进.快速排序由C. A. R. Hoare在1962年提出. 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另 ...

  9. 【Java心得总结一】Java基本类型和包装类型解析

    说到数据类型这个问题是一个基本的不能再基本的问题,我们当初编程入门第一课一般就是讲数据类型,而今天我想记录的是一个在Java中容易忽略的问题,即基本类型和包装类型. 一.基本类型出现的原因 我们都知道 ...

随机推荐

  1. linux wc命令

    Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数. ...

  2. MySQL 数据库操作命令汇总

    此文全部都是基本的数据库语言 1.登陆到mysql >mysql -h hostname -u username -p 然后等待系统提示输入密码即可登陆.如果想在登陆的时候就选择好数据库,可以使 ...

  3. 文成小盆友python-num8 面向对象中的成员,成员修饰符,特殊成员,异常处理,设计模式之单例模式

    本节主要内容: 1.面向对象中的成员 2.成员修饰符 3.特殊成员 4.异常处理 5.设计模式之单例模式 一.面向对象中的成员(类的成员) 类的成员总共可以分为3大类,每类中有不同的分支. 1.总述, ...

  4. 响应式Asp.net MVC企业网站源码

    最近时间充裕,自己写了一个响应式MVC企业网站系统,用于回顾自己的MVC知识.网站源码后台和前台都采用响应式布局,可以适应不同的屏幕. 一.源码描述 响应式企业网站系统,前台和后台都采用了响应式布局, ...

  5. 理解java的三大特性之多态(三)

    摘自:http://cmsblogs.com/?p=52 面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已 ...

  6. matlab图像处理

    matlab图像处理 转自:http://www.cnblogs.com/lovebay/p/5094146.html 1. 图像和图像数据 缺省情况下,MATLAB将图像中的数据存储为双精度类型(d ...

  7. 再转一篇gtest1.6安装

    http://www.cppblog.com/izualzhy/archive/2012/07/31/185772.html googletest是一个用来写C++单元测试的框架,它是跨平台的,可应用 ...

  8. Android手机SSH Client客户端推荐JuiceSSH

    Windows上建立ssh服务器 参见: http://www.cnblogs.com/xred/archive/2012/04/21/2461627.html Android手机SSH Client ...

  9. 2015必须推荐的Android框架,猿必读系列!

    一.Guava Google 的基于java1.6的类库集合的扩展项目,包括collections, caching, primitives support, concurrency librarie ...

  10. python 操作 office

    首先介绍下office win32 com接口,这个是MS为自动化提供的操作接口,比如我们打开一个WORD文档,就可以在里面编辑VB脚本,实现我们自己的效果.对于这种一本万利的买卖,Python怎么能 ...