【Live555】live555源碼詳解系列筆記
3、BasicHashTable 哈希表
協作圖:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNyZuBnL0YTMwIDM1kDMxIDOwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
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源碼詳解系列筆記