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 源码分析 (一) 辅助类

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,009评论 3 119
  • 【情景再现—爱发脾气、好斗】有一位妈妈说:“我女儿似乎总是很愤怒,并且在生气的时候会变得攻击性很强。她会打妹妹、跟...
    sunny_珊阅读 320评论 0 1
  • 看日落 在三月的尾巴里 余光缱绻在梦里 笑便成了痴 可否 赐我一株烂熟的玫瑰 让我把她葬在沙扬娜拉的夜里 平静地...
    Jasmine与麋鹿阅读 150评论 0 0
  • 破晓催坊起,夫忙家妇忡。 孤身负闹市,独做快活翁。
    无忧鹏阅读 163评论 0 0
  • 网络三期 焦作翟冲【读书】分享第455天 2018.03.30 那么现在,请你回想一下:你今天都吃了些什么? ...
    春暖花开zc阅读 206评论 0 0