IT++
4.3.1
Toggle main menu visibility
itpp
protocol
events.cpp
Go to the documentation of this file.
1
28
29
#include <
itpp/protocol/events.h
>
30
31
32
namespace
itpp
33
{
34
35
Ttype
Event_Queue::t = 0;
36
37
unsigned
long
long
int
Base_Event::global_id
= 0;
38
39
std::priority_queue <
Base_Event
*,
40
std::deque<Base_Event*, std::allocator<Base_Event*> >,
41
Compare_Base_Event_Times
> Event_Queue::event_queue;
42
43
bool
Event_Queue::keep_running =
false
;
44
45
void
Event_Queue::add
(
Base_Event
*e)
46
{
47
e->
expire_t
= t + e->
delta_t
;
48
event_queue.push(e);
49
}
50
51
void
Event_Queue::_run()
52
{
53
while
(!event_queue.empty() && keep_running) {
54
Base_Event
* e = event_queue.top();
// Next event to process.
55
event_queue.pop();
// Remove event.
56
57
if
(e->
active
) {
// Only process active events.
58
t = e->
expire_t
;
// Update current time.
59
e->
exec
();
// Execute the event.
60
}
61
62
delete
e;
// This event is history!
63
}
64
65
}
66
67
void
Event_Queue::start
()
68
{
69
keep_running =
true
;
70
_run();
71
}
72
73
void
Event_Queue::stop
()
74
{
75
keep_running =
false
;
76
}
77
78
void
Event_Queue::clear
()
79
{
80
stop
();
81
Base_Event
* e;
82
83
while
(!event_queue.empty()) {
84
e = event_queue.top();
85
delete
e;
86
event_queue.pop();
87
}
88
89
t = 0;
90
}
91
92
// void Event_Queue::cancel_all(BaseSignal *s){
93
94
// }
95
96
97
}
// namespace itpp
itpp::Base_Event
Base Event Class.
Definition
events.h:69
itpp::Base_Event::active
bool active
ADD DOCUMENTATION HERE.
Definition
events.h:100
itpp::Base_Event::delta_t
Ttype delta_t
ADD DOCUMENTATION HERE.
Definition
events.h:96
itpp::Base_Event::global_id
static unsigned long long int global_id
ADD DOCUMENTATION HERE.
Definition
events.h:104
itpp::Base_Event::exec
virtual void exec(void)=0
ADD DOCUMENTATION HERE.
itpp::Base_Event::expire_t
Ttype expire_t
ADD DOCUMENTATION HERE.
Definition
events.h:98
itpp::Event_Queue::start
static void start()
Start executing events.
Definition
events.cpp:67
itpp::Event_Queue::add
static void add(Base_Event *e)
Add event to Queue.
Definition
events.cpp:45
itpp::Event_Queue::stop
static void stop()
Stop execution of events.
Definition
events.cpp:73
itpp::Event_Queue::clear
static void clear()
Remove all events.
Definition
events.cpp:78
events.h
Definitions of an event-based simulation class.
itpp
itpp namespace
Definition
itmex.h:37
itpp::Ttype
double Ttype
64-bit floating point time
Definition
events.h:54
itpp::Compare_Base_Event_Times
Compare to events, Returns true if expire time of event1 is larger than the expire time of event2.
Definition
events.h:108
Generated by
1.17.0