基于ACE的定时器模板类
1 ACETimerClockGenerator.h
2 ClockGeneratorIF.h
3 在类中定义一个结构体,在结构体中定义一个函数。
4 在结构体中定义一个函数,这样做有什么好呢
5
6 TimerHandler.h
7 用了模板的方法去构造定时器类。有助于底层调用上层。在构造的时候就初始化一个类中最大的定时器个数,及模板类(也就是parent)。
8 TimerHandler(T *parent, int numTimers) : timers(numTimers, -1)
9 { //初始化向量,赋值给私有的成员变量。
10 this->parent = parent;
11 this->numTimers = numTimers;
12 }
13
14
15 用到了STL向量:
16 std::vector timers;
17
18 ACE中
19 1. startTimer(int timerType, const ACE_Time_Value &delay)
20 ACE_Reactor::instance()->schedule_timer()
21 2. stopTimer(int timerType)
22 ACE_Reactor::instance()->cancel_timer(timers[timerType]);
23 3. showTimers(bool showAll)
24 ACE_Timer_Queue *reactor_timerQ = ACE_Reactor::instance()->timer_queue();
25 ACE_Timer_Queue_Iterator &iter = reactor_timerQ->iter();
26
27
28
29
30
31 #ifndef _TimerHandler_h
32 #define _TimerHandler_h
33
34 #include
35 #include "ace/Timer_Queue.h"
36 #include "ace/Date_Time.h"
37 #include "ace/Event_Handler.h"
38 #include "ace/Reactor.h"
39
40 #include "TraceUtils.h"
41
42 template
43 class TimerHandler : public ACE_Event_Handler
44 {
45 std::vector timers;
46 T *parent;
47 int numTimers;
48 public:
49 TimerHandler(T *parent, int numTimers) : timers(numTimers, -1)
50 {
51 this->parent = parent;
52 this->numTimers = numTimers;
53 }
54
55 ~TimerHandler()
56 {
57 for (unsigned int i = 0; i < timers.size(); i++)
58 {
59 if (timers[i] != -1)
60 ACE_Reactor::instance()->cancel_timer(timers[i]);
61 }
62 }
63