jrtplib 源码分析 (一) 辅助类

    jrtplib 需要用到 jthread中的文件  jmutex 和 jthread

  

    jthread类包含:

         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 对象

     注释 :

       本人最近阅读 RTP源代码,对类似以下的语句很不理解
              RTCPPacket *p;
             p = RTPNew(GetMemoryManager(),RTPMEM_TYPE_CLASS_RTCPSRPACKET) RTCPSRPacket(data,length);

      new的第一个大小参数(类型为size_t) 是编译器自己加上去的。new(a,b) T 变成 new(sizeof(T),a,b) T    所以
            RTPNew(GetMemoryManager(),RTPMEM_TYPE_CLASS_RTCPSRPACKET) RTCPSRPacket      

    相当于
            new (GetMemoryManager(),RTPMEM_TYPE_CLASS_RTCPSRPACKET) RTCPSRPacket               

    相当于
            new ( sizeof(RTCPSRPacket), GetMemoryManager(),RTPMEM_TYPE_CLASS_RTCPSRPACKET) RTCPSRPacket


    rtpaddress :网络地址基类 抽象类

   

    rtpipv4address : 继承自 rtpaddress

    rtpipv6address: 继承自 rtpaddress

   

    rtpkeyhashtable:哈希表  模板类

    class HashElement        //哈希元素
    {
    private:
        int hashindex;
        Key key;
        Element element;
    public:
        HashElement *hashprev,*hashnext;
        HashElement *listprev,*listnext;
    };


    HashElement *table[hashsize];  数组指针 二维数组   根据key的索引值 包含HashElement的链表 指针

    HashElement *firsthashelem,*lasthashelem;    数据的链表开始和结束
    HashElement *curhashelem;                            当前项 查找 删除时使用


   GetIndex::GetIndex(class key &k) : 得到索引值 k%8371


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


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


   rtplibraryversion :库版本号



 



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值