Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
EventProcessor.cpp
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
6
#include "
EventProcessor.h
"
7
8
void
EventProcessor::Update
(
uint32
p_time)
9
{
10
// update time
11
m_time
+= p_time;
12
13
// main event loop
14
EventList::iterator i;
15
while
(((i =
m_events
.begin()) !=
m_events
.end()) && i->first <=
m_time
)
16
{
17
// get and remove event from queue
18
BasicEvent
* Event = i->second;
19
m_events
.erase(i);
20
21
if
(!Event->
to_Abort
)
22
{
23
if
(Event->
Execute
(
m_time
, p_time))
24
{
25
// completely destroy event if it is not re-added
26
delete
Event;
27
}
28
}
29
else
30
{
31
Event->
Abort
(
m_time
);
32
delete
Event;
33
}
34
}
35
}
36
37
void
EventProcessor::KillAllEvents
(
bool
force)
38
{
39
// prevent event insertions
40
m_aborting
=
true
;
41
42
// first, abort all existing events
43
for
(EventList::iterator i =
m_events
.begin(); i !=
m_events
.end();)
44
{
45
EventList::iterator i_old = i;
46
++i;
47
48
i_old->second->to_Abort =
true
;
49
i_old->second->Abort(
m_time
);
50
if
(force || i_old->second->IsDeletable())
51
{
52
delete
i_old->second;
53
54
if
(!force)
// need per-element cleanup
55
m_events
.erase(i_old);
56
}
57
}
58
59
// fast clear event list (in force case)
60
if
(force)
61
m_events
.clear();
62
}
63
64
void
EventProcessor::AddEvent
(
BasicEvent
* Event,
uint64
e_time,
bool
set_addtime)
65
{
66
if
(set_addtime) Event->
m_addTime
=
m_time
;
67
Event->
m_execTime
= e_time;
68
m_events
.insert(std::pair<uint64, BasicEvent*>(e_time, Event));
69
}
70
71
uint64
EventProcessor::CalculateTime
(
uint64
t_offset)
const
72
{
73
return
(
m_time
+ t_offset);
74
}
75
uint32
std::uint32_t uint32
Definition
Define.h:77
uint64
std::uint64_t uint64
Definition
Define.h:76
EventProcessor.h
BasicEvent
Definition
EventProcessor.h:16
BasicEvent::to_Abort
bool to_Abort
Definition
EventProcessor.h:30
BasicEvent::Abort
virtual void Abort(uint64)
Definition
EventProcessor.h:28
BasicEvent::Execute
virtual bool Execute(uint64, uint32)
Definition
EventProcessor.h:24
BasicEvent::m_addTime
uint64 m_addTime
Definition
EventProcessor.h:34
BasicEvent::m_execTime
uint64 m_execTime
Definition
EventProcessor.h:35
EventProcessor::AddEvent
void AddEvent(BasicEvent *Event, uint64 e_time, bool set_addtime=true)
Definition
EventProcessor.cpp:64
EventProcessor::KillAllEvents
void KillAllEvents(bool force)
Definition
EventProcessor.cpp:37
EventProcessor::m_events
EventList m_events
Definition
EventProcessor.h:52
EventProcessor::CalculateTime
uint64 CalculateTime(uint64 t_offset) const
Definition
EventProcessor.cpp:71
EventProcessor::Update
void Update(uint32 p_time)
Definition
EventProcessor.cpp:8
EventProcessor::m_aborting
bool m_aborting
Definition
EventProcessor.h:53
EventProcessor::m_time
uint64 m_time
Definition
EventProcessor.h:51
src
server
shared
Utilities
EventProcessor.cpp
Generated on
for Project SkyFire Core by
1.17.0