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 :库版本号