【Live555】live555源码详解(一):BasicUsageEnvironment、UsageEnvironment

类关系图

【Live555】live555源码详解(一):BasicUsageEnvironment、UsageEnvironment_第1张图片

1、UsageEnvironment 详解

1.1 BasicUsageEnvironment

BasicUsageEnvironment 继承自 BasicUsageEnvironment0,主要增加的功能,使用静态函数 createNew 来创建自己;重载“<<”操作符,用来向标准错误输出(stderr)打印信息。
新增的接口

createNew 	:静态函数,用来创建 BasicUsageEnvironment

重载UsageEnvironment 的接口

getErrno	:返回错误码 errno
operator<<	: 重载“<<”操作符函数,参数可以是char const*、int、unsigned、double、void*

使用例子

envir() << "...local connection opened\n";	// envir() 返回当前的环境 UsageEnvironment& fEnviron; 
1.2 BasicUsageEnvironment0

BasicUsageEnvironment0 继承自 UsageEnvironment,主要维护一个保存 处理结果信息 的缓冲区 char fResultMsgBuffer[RESULT_MSG_BUFFER_MAX]
重载UsageEnvironment 的接口

getResultMsg	:返回 char fResultMsgBuffer[RESULT_MSG_BUFFER_MAX]
setResultMsg	:将信息保存到 fResultMsgBuffer 中
setResultErrMsg	:相比setResultMsg,将 strerror(err) 添加到信息缓冲区中
appendToResultMsg :向信息缓冲区中追加信息
reportBackgroundError :把信息打印到标准错误stderr中:fputs(getResultMsg(), stderr)

使用例子

envir().setResultMsg("URL is too long");
1.3 UsageEnvironment

UsageEnvironment 纯虚类,代表使用环境
实现的接口:

reclaim			:尝试回收资源,delete this之前会做判断,如果还不能删除,返回false
taskScheduler	:返回任务调度

虚函数

internalError	:当发生内部错误时,调用;实际调用的是 abort() 来中止程序,可以根据情况重载它。

必须重载的纯虚函数,就是上面两个类重载的接口,主要是输出流重定向<< 和 维护 处理结构信息

MsgString:在 UsageEnvironment 中定义: typedef char const* MsgString;

2、TaskScheduler 详解

2.1 BasicTaskScheduler

BasicTaskScheduler 继承自 BasicTaskScheduler0,用select来调度任务
新增的接口

构造函数	:使用 FD_ZERO 来清空读、写、异常的 fd_set
createNew	:静态函数,用来创建 BasicTaskScheduler
schedulerTickTask	: 设置延迟任务

重载 BasicTaskScheduler0 的接口

SingleStep	:单步执行,内部使用 select 处理读写事件,然后处理触发事件 fTriggeredEventHandlers,
	最后处理任何可能已经到期的延迟事件 fDelayQueue。 

重载 TaskScheduler 的接口

setBackgroundHandling	:设置socket句柄
moveSocketHandling		:替换socket句柄
2.2 BasicTaskScheduler0

BasicTaskScheduler0 继承自 TaskScheduler
新增纯虚函数

SingleStep

重载 TaskScheduler 的接口

scheduleDelayedTask		:向延时任务队列 fDelayQueue 中添加任务 AlarmHandler
unscheduleDelayedTask	:从延时任务队列 fDelayQueue 中删除任务
createEventTrigger		:创建触发事件
deleteEventTrigger		:删除触发事件
triggerEvent			:触发事件,这里将事件设置为可触发标志,在 SingleStep 中才会真正执行触发的事件任务
doEventLoop				:重复循环,处理可读套接字和定时事件
2.3 TaskScheduler

TaskScheduler 纯虚类
纯虚函数:管理socket监听如select、延迟任务、事件触发

// 管理socket监听如select
setBackgroundHandling
moveSocketHandling

// 管理延迟任务(定时任务)
scheduleDelayedTask
unscheduleDelayedTask

// 管理触发事件
createEventTrigger
deleteEventTrigger
triggerEvent

// 所有的任务都在事件循环中执行
doEventLoop

虚函数

rescheduleDelayedTask	:等于先 unscheduleDelayedTask 然后再 scheduleDelayedTask
internalError	:默认是,当发生内部错误时,终止程序 abort()

普通函数

disableBackgroundHandling	:禁止事件循环,
	内部直接调用 setBackgroundHandling(socketNum, 0, NULL, NULL);

你可能感兴趣的:(视频,rtsp)