概述
- 編譯和安裝jrtlib之前需要編譯和安裝jthread庫
- jrtplib需要用到j(luò)thread中的文件 jmutex和jthread。
jthread庫
jthread主要是封裝了跨平臺的thread類和mutex類,包括:
- jmutex: 互斥類 。
- JMutexAutoLock:構(gòu)造函數(shù)實現(xiàn)加鎖 虛構(gòu)函數(shù)實現(xiàn)解鎖 參數(shù)為 jmutex對象。
- jthread:線程類 抽象類 繼承者需實現(xiàn)對 virtual void *Thread() = 0; 的實現(xiàn) 用以實現(xiàn)自己想要的功能。
jrtplib類:
- rtpdebug:重載了new
struct MemoryInfo //內(nèi)存申請信息
{
void *ptr; //內(nèi)存指針
size_t size; //內(nèi)存大小
int lineno; //申請時行號
char *filename; //文件名稱
MemoryInfo *next;
};
void *operator new(size_t s,char filename[],int line) // 用來保存申請內(nèi)存的信息
void dodelete(void *p) //刪除內(nèi)存
rtprandom: 生成隨機數(shù)
rtperrors :錯誤類型定義
rtpdefines :常量定義
rtpconfig : 根據(jù)操作系統(tǒng)類型判斷包含那個頭文件 rtpconfig_win rtpconfig_unix.h 定義的常量值
rtptypes :定義int8_t , int16_t , int32_t, int64_t 類型
rtpmemorymanager:內(nèi)存管理 申請 釋放
rtpmemoryobject:設(shè)置和得到 RTPMemoryManager *memmgr 對象
rtpaddress :網(wǎng)絡(luò)地址基類 抽象類
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;
};
//數(shù)組指針 二維數(shù)組 根據(jù)key的索引值 包含HashElement的鏈表 指針
HashElement *table[hashsize];
//數(shù)據(jù)的鏈表開始和結(jié)束
HashElement *firsthashelem,*lasthashelem;
//當前項 查找 刪除時使用
HashElement *curhashelem;
GetIndex::GetIndex(class key &k) : 得到索引值 k%8371
rtptimeutilities:ntp時間類 秒 + 微妙 (1/1000000)
rtpcollisionlist: 接收地址檢測 地址是否存在 超時檢測
rtplibraryversion :庫版本號