zoukankan      html  css  js  c++  java
  • 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]
    //离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协议

    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    多线程环境下调用 HttpWebRequest 并发连接限制
    i—比 i++ 快?
    文件在不同文件系统间拷贝文件时间改变的问题
    Go websocket 聊天室demo2
    Go websocket 聊天室demo以及k8s 部署
    AcWing 1077. 皇宫看守
    AcWing 1073. 树的中心
    AcWing 1085. 不要62
    AcWing 1081 度的数量
    AcWing 1082. 数字游戏
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4854340.html
Copyright © 2011-2022 走看看