UsageEnvironment代表了整个系统运行的环境,它提供了错误记录和错误报告的功能,无论哪一个类要输出错误,就需要保存UsageEnvironment的指针。
UsageEnvironment包含下面几个文件:
一.字符串拷贝函数: strDup.h / strDup.cpp
strDup.h 解释:
char* strDup(char const* str);
// Note: strDup(NULL) returns NULL
//如果源字符串为空,则返回空
char* strDupSize(char const* str);
// Like "strDup()", except that it *doesn't* copy the original.
// (Instead, it just allocates a string of the same size as the original.)
//返回一个字符串,但是它不拷贝源字符串str的内容,它仅拷贝一个与源字符串长度相同的空字符串
strDup.cpp 解释:
#include "strDup.hh"
#include "string.h"
char* strDup(char const* str) {
if (str == NULL) return NULL; //判断源函数是否为空
size_t len = strlen(str) + 1; //计算源字符串的长度,这里注意strlen所得大小不包含'\0',所以这里要加一。
char* copy = new char[len]; //生成新字符串
if (copy != NULL) {
memcpy(copy, str, len); //拷贝源字符串的内容
}
return copy;
}
char* strDupSize(char const* str) {
if (str == NULL) return NULL;
size_t len = strlen(str) + 1;
char* copy = new char[len];
//与strDup类似,只是这里不拷贝源字符串的内容,直接返回new出来的新字符串。
return copy;
}
二.Boolean.hh 布尔类型的一些宏定义定义
三.HashTable.hh / HashTable.cpp 哈希表
根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。
在这里只是声明了一个基类,具体使用的子类在BasicUsageEnvironment里定义。
四.UsageEnvironment.hh / UsageEnvironment.cpp
声明了两个基类:UsageEnvironment 和 TaskScheduler,具体使用的子类在BasicUsageEnvironment里定义。
UsageEnvironment :系统运行环境,保存全局仅有的TaskScheduler,Live555的所有类都保存了UsageEnvironment的指针,因此每个类可以方便地将自己的任务加入调度中。负责消息的输入输出和用户的交互功能。
TaskScheduler: 任务调度类,整个程序的运行发动机就是它,它负责调度任务,执行任务。实现事件的异步处理和事件处理函数的注册,它通过维护一个异步读取源实现对诸如通信消息到达等事件的处理,通过使用DelayQueue实现对其他注册函数的延时调度。
// By default, we handle 'should not occur'-type library errors by calling abort(). Subclasses can redefine this, if desired.
void UsageEnvironment::internalError() {
abort();
}
void TaskScheduler::internalError() {
abort();
}
//当出现内部错误时,调用abort函数退出进程,子类也可以重写该函数。