天天看点

【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源码详解系列笔记