美文网首页
jrtplib3.11.1之 源码分析(一):辅助类

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

作者: C_GO流媒体后台开发 | 来源:发表于2018-12-02 15:47 被阅读38次

    概述

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

          本文链接:https://www.haomeiwen.com/subject/rmbjcqtx.html