11 AlarmHandler定时处理类——Live555源码阅读(一)基本组件类
2015年06月24日[TOC] 博客园文章地址 http://www.cnblogs.com/oloroso/archive/2015/06/24/4596870.html 这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类。
本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/
本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso
##AlarmHandler定时处理类
这个类定义在live555sourcecontrol\BasicUsageEnvironment\BasicTaskScheduler0.cpp
文件中。
AlarmHandler
继承自DelayQueueEntry
其是用来作为DelayQueued 的节点
的。其和HanlerDescriptor有点像。其有在DelayQueueEntry
的基础上又增加了两个数据成员,一个函数指针TaskFunc* fProc
和一个数据地址void* fClientData
(这个在使用的时候会是调用函数的对象。即函数指针是对象的成员函数地址,数据地址就是对象的地址)。回想一下DelayQueueEntry
是链表的节点
,有前驱和后继指针,延时剩余时间,token标识。
////////// A subclass of DelayQueueEntry,
////////// used to implement BasicTaskScheduler0::scheduleDelayedTask()
class AlarmHandler: public DelayQueueEntry {
public:
AlarmHandler(TaskFunc* proc, void* clientData, DelayInterval timeToDelay)
: DelayQueueEntry(timeToDelay), fProc(proc), fClientData(clientData) {
}
private: // redefined virtual functions
virtual void handleTimeout() {
(*fProc)(fClientData);
DelayQueueEntry::handleTimeout();
}
private:
TaskFunc* fProc;
void* fClientData;
};