live555学习笔记【2】--重要类

接下来,我们正式进入live555的学习,live555项目的源代码中包括四个基本的库、各种测试代码以及Media Server。 四个基本的库分别是: UsageEnvironment、groupsock、 liveMedia以及BasicUsageEnvironment。

首先,我们先来学习live555中比较重要的几个类,不一定对其完全熟悉,只需要知道live555中存在这个类,以及这个类的作用是什么即可。也可以参考一下官网中提供的类图:live: Class Hierarchy

1、UsageEnvironment

UsageEnvironment的基类是BasicUsageEnvironment,该类库是对系统环境的抽象,是用于整个系统的基础功能类,代表了整个系统运行的环境,它提供了错误记录和错误报告的功能。无论哪一个类要输出错误,就需要保存UsageEnvironment的指针。

2、TaskScheduler

TaskScheduler则提供了任务调度功能.整个程序的运行发动机就是它,它调度任务,执行任务(任务就是一个函数).TaskScheduler由于在全局中只有一个,所以保存在了UsageEnvironment中.而所有的类又都保存了UsageEnvironment的指针,所以谁想把自己的任务加入调度中,那是很容易的.在此还看到一个结论:整个live555(服务端)只有一个线程.

3、HashTable

类HashTable:不用多说,实现了哈稀表功能.

4、DelayQueue

类DelayQueue即"延迟队列",它是一个队列,每一项代表了一个要调度的任务(在它的fToken变量中保存),同时保存了这个任务离执行时间点的剩余时间.可以预见,它就是在TaskScheduler中用于管理调度任务的东西.注意,此队列中的任务只被执行一次!执行完后这一项即被无情抛弃!

5、HandlerSet

Handler的集合.Handler是什么呢?它是一种专门用于执行socket操作的函数,HandlerSet被TaskScheduler用来管理所有的socket任务(增删改查),所以TaskScheduler中现在已调度两种任务了:socket任务(handlerSet)和延迟任务(DelayQueue).其实TaskScheduler还调度第三种任务:Event

6、Groupsock

类Groupsock封装了socket操作,增加了多播放支持和一对多单播的功能.但我只看到它对UDP的支持。它管理着一个本地socket和多个目的地址,因为是UDP,所以只需知道对方地址和端口即可发送数据。Groupsock的构造函数有一个参数是struct in_addr const& groupAddr,在构造函数中首先会调用父类构造函数创建socket对象,然后判断这个地址,若是多播地址,则加入多播组。Groupsock的两个成员变量destRecord* fDests,在addDestination()和removeDestination()函数中就是操作fDests,添加或删除目的地址。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chiang木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值