天天看點

【Live555】live555源碼詳解(二):BasicHashTable、DelayQueue、HandlerSet

【Live555】live555源碼詳解系列筆記

3、BasicHashTable 哈希表

協作圖:

【Live555】live555源碼詳解(二):BasicHashTable、DelayQueue、HandlerSet
3.1 BasicHashTable

BasicHashTable 繼承自 HashTable

重載 HashTable 接口

Add			:添加鍵值對
Remove		:删除鍵值
Lookup		:由“健”查找“值”
numEntries	:鍵值對數量
           

重載 HashTable 成員(一個疊代器)

class Iterator
	重載 Iterator的成員函數 next
           

需要實作的 HashTable 接口

HashTable* HashTable::create(int keyType) {
	return new BasicHashTable(keyType);
}

HashTable::Iterator* HashTable::Iterator::create(HashTable const& hashTable) {
	// "hashTable" is assumed to be a BasicHashTable
	return new BasicHashTable::Iterator((BasicHashTable const&)hashTable);
}
           
3.2 HashTable 純虛類

需要實作的接口

create		:這是一個靜态函數,不是虛函數,需要用這個函數來建立哈希表
           

實作的接口:

IsEmpty		:是否為空
RemoveNext	:删除下一組鍵值對
getFirst	:傳回第一組鍵值對的“值”
           

純虛函數:

Add			:添加鍵值對
Remove		:删除鍵值
Lookup		:由“健”查找“值”
numEntries	:鍵值對數量
           
4、DelayQueue 延時任務隊列

DelayQueue 繼承自 DelayQueueEntry

主要接口:

addEntry	:增加任務;
removeEntry	:删除任務
updateEntry	:更新任務,等于先删除,後增加
handleAlarm	:先判斷剩餘時間,如果為零,則執行一個任務
timeToNextAlarm	:距離下一個延時任務執行還有多久
           

DelayQueueEntry 表示一個任務節點

主要接口:

token:傳回 token令牌,每個任務都對應一個令牌
           
5、HandlerSet 監聽的任務容器
assignHandler	:添加任務
clearHandler	:删除任務
moveHandler		:使用新的替換舊的任務
           

相關類

HandlerDescriptor	:表示一個任務
HandlerIterator		:疊代器
           

【Live555】live555源碼詳解系列筆記