jrtplib3.11.1のソースコード分析(一):補助類

2520 ワード

概要

  • jrtlibをコンパイルおよびインストールする前にjthreadライブラリ
  • をコンパイルおよびインストールする必要がある
  • 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定義定数値
  • rtptype:int 8_の定義t , int16_t , int32_t, int64_tタイプ
  • rtpmemorymanager:メモリ管理申請リリース
  • rtpmemoryobject:RTPMemoryManager*memmgrオブジェクトの設定と取得
  • rtpaddress:ネットワークアドレスベースクラス抽象クラス
  • rtpipv 4 address:rtpaddress
  • から継承
  • rtpipv 6 address: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ソースコード分析(一)補助クラス