-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTimerLinkedList.cpp
68 lines (57 loc) · 1.65 KB
/
TimerLinkedList.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include "TimerLinkedList.h"
TimerLinkedList::TimerLinkedList(/* args */)
{
}
TimerLinkedList::~TimerLinkedList()
{
}
bool TimerLinkedList::InsertTimer(Timer *timer)
{
if (!timer)
{
throw std::exception();
return false;
}
// 当定时器链表为空时
if (!this->Head_Timer)
{
Head_Timer = timer;
Tail_Timer = timer;
return true;
}
// 当插入的定时器小于当前链表所有定时器的超时时间时
if (timer->Expire_Time < Head_timer->Expire_Time)
{
timer->Pre_Timer = NULL;
timer->Next_Timer = Head_Timer;
Head_Timer->Pre_Timer = timer;
this->Head_Timer = timer;
return true;
}
// 当插入的定时器大于当前链表所有定时器的超时时间时
if (timer->Expire_Time > Tail_Timer->Expire_Time)
{
timer->Pre_Timer = Tail_Timer;
timer->Next_Timer = NULL;
Tail_Timer->Next_Timer = timer;
this->Tail_Timer = timer;
return true;
}
// 当插入的定时器位于定时器链表中间时
Timer ¤t = *Head_Timer;
while (current)
{
if (timer->Expire_Time > current->Expire_Time && timer->Expire_Time < current->Next_Timer->Expire_Time)
{
timer->Next_Timer = current.Next_Timer.Next_Timer;
timer->Pre_Timer = current;
current.Next_Timer.Pre_Timer = timer;
current.Next_Timer = timer;
return true;
}
current = current.Next_Timer;
}
}
bool TimerLinkedList::DeleteTimer(Timer *timer)
{
}