Live555源码学习笔记之UsageEnvironment模块

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函数退出进程,子类也可以重写该函数。


Live555源码学习笔记之UsageEnvironment模块_第1张图片


你可能感兴趣的:(Live555)