jrtplib3.11.1之 源码分析(一):辅助类

概述

  1. 编译和安装jrtlib之前需要编译和安装jthread库
  2. jrtplib需要用到jthread中的文件 jmutex和jthread。

jthread库

jthread主要是封装了跨平台的thread类和mutex类,包括:

  • jmutex: 互斥类 。
  • JMutexAutoLock:构造函数实现加锁 虚构函数实现解锁 参数为 jmutex对象。
  • jthread:线程类 抽象类 继承者需实现对 virtual void *Thread() = 0; 的实现 用以实现自己想要的功能。

jrtplib类:

  • rtpdebug:重载了new
struct MemoryInfo  //内存申请信息
{
    void *ptr;            //内存指针
    size_t size;       //内存大小
    int lineno;        //申请时行号
    char *filename;    //文件名称

    MemoryInfo *next;
};

void *operator new(size_t s,char filename[],int line)   // 用来保存申请内存的信息

void dodelete(void *p)                                                       //删除内存
  • rtprandom: 生成随机数

  • rtperrors :错误类型定义

  • rtpdefines :常量定义

  • rtpconfig : 根据操作系统类型判断包含那个头文件 rtpconfig_win rtpconfig_unix.h 定义的常量值

  • rtptypes :定义int8_t , int16_t , int32_t, int64_t 类型

  • rtpmemorymanager:内存管理 申请 释放

  • rtpmemoryobject:设置和得到 RTPMemoryManager *memmgr 对象

  • rtpaddress :网络地址基类 抽象类

  • rtpipv4address : 继承自 rtpaddress

  • rtpipv6address: 继承自 rtpaddress

  • rtpkeyhashtable:哈希表 模板类

    class HashElement
    {
    public:
        HashElement(const Element &e,int index):element(e) { hashprev = 0; hashnext = 0; listnext = 0; listprev = 0; hashindex = index; }
        int GetHashIndex()                      { return hashindex; }
        Element &GetElement()                       { return element; }
#ifdef RTPDEBUG
        void Dump()                         { std::cout << "\tHash index " << hashindex << " | Element " << element << std::endl; }
#endif // RTPDEBUG
    private:
        int hashindex;
        Element element;
    public:
        HashElement *hashprev,*hashnext;
        HashElement *listprev,*listnext;
    };
    //数组指针 二维数组   根据key的索引值 包含HashElement的链表 指针
    HashElement *table[hashsize];
    //数据的链表开始和结束
    HashElement *firsthashelem,*lasthashelem;
    //当前项 查找 删除时使用
    HashElement *curhashelem;
  • GetIndex::GetIndex(class key &k) : 得到索引值 k%8371

  • rtptimeutilities:ntp时间类 秒 + 微妙 (1/1000000)

  • rtpcollisionlist: 接收地址检测 地址是否存在 超时检测

  • rtplibraryversion :库版本号

参考

jrtplib 源码分析 (一) 辅助类

你可能感兴趣的:(jrtplib3.11.1之 源码分析(一):辅助类)