11 AlarmHandler定时处理类——Live555源码阅读(一)基本组件类

这是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;
};

你可能感兴趣的:(handler)