SNode.C
Loading...
Searching...
No Matches
core::EventMultiplexer::EventQueue Class Reference
Collaboration diagram for core::EventMultiplexer::EventQueue:

Public Member Functions

 EventQueue ()
 
 ~EventQueue ()
 
 EventQueue (const EventQueue &)=delete
 
 EventQueue (EventQueue &&)=delete
 
EventQueueoperator= (const EventQueue &)=delete
 
EventQueueoperator= (EventQueue &&)=delete
 
void insert (Event *event)
 
void remove (Event *event)
 
void execute (const utils::Timeval &currentTime)
 
bool empty () const
 
void clear ()
 

Private Attributes

std::list< Event * > * executeQueue
 
std::list< Event * > * publishQueue
 

Detailed Description

Definition at line 58 of file EventMultiplexer.h.

Constructor & Destructor Documentation

◆ EventQueue() [1/3]

core::EventMultiplexer::EventQueue::EventQueue ( )

Definition at line 192 of file EventMultiplexer.cpp.

193 : executeQueue(new std::list<Event*>())
194 , publishQueue(new std::list<Event*>()) {
195 }
std::list< Event * > * publishQueue
std::list< Event * > * executeQueue

References EventQueue().

Referenced by EventQueue().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~EventQueue()

core::EventMultiplexer::EventQueue::~EventQueue ( )

Definition at line 197 of file EventMultiplexer.cpp.

197 {
198 delete executeQueue;
199 delete publishQueue;
200 }

◆ EventQueue() [2/3]

core::EventMultiplexer::EventQueue::EventQueue ( const EventQueue & )
delete

◆ EventQueue() [3/3]

core::EventMultiplexer::EventQueue::EventQueue ( EventQueue && )
delete

Member Function Documentation

◆ clear()

void core::EventMultiplexer::EventQueue::clear ( )

Definition at line 224 of file EventMultiplexer.cpp.

224 {
225 std::swap(executeQueue, publishQueue);
226
227 for (const Event* event : *executeQueue) {
228 event->getEventReceiver()->destruct();
229 }
230
231 executeQueue->clear();
232 }

◆ empty()

bool core::EventMultiplexer::EventQueue::empty ( ) const

Definition at line 220 of file EventMultiplexer.cpp.

220 {
221 return publishQueue->empty();
222 }

◆ execute()

void core::EventMultiplexer::EventQueue::execute ( const utils::Timeval & currentTime)

Definition at line 210 of file EventMultiplexer.cpp.

210 {
211 std::swap(executeQueue, publishQueue);
212
213 for (Event* event : *executeQueue) {
214 event->dispatch(currentTime);
215 }
216
217 executeQueue->clear();
218 }

◆ insert()

void core::EventMultiplexer::EventQueue::insert ( Event * event)

Definition at line 202 of file EventMultiplexer.cpp.

202 {
203 publishQueue->push_back(event); // do not allow two or more same events in one tick
204 }

◆ operator=() [1/2]

EventQueue & core::EventMultiplexer::EventQueue::operator= ( const EventQueue & )
delete

◆ operator=() [2/2]

EventQueue & core::EventMultiplexer::EventQueue::operator= ( EventQueue && )
delete

◆ remove()

void core::EventMultiplexer::EventQueue::remove ( Event * event)

Definition at line 206 of file EventMultiplexer.cpp.

206 {
207 publishQueue->remove(event); // in case of erase remove the event from the published queue
208 }

Member Data Documentation

◆ executeQueue

std::list<Event*>* core::EventMultiplexer::EventQueue::executeQueue
private

Definition at line 76 of file EventMultiplexer.h.

◆ publishQueue

std::list<Event*>* core::EventMultiplexer::EventQueue::publishQueue
private

Definition at line 77 of file EventMultiplexer.h.


The documentation for this class was generated from the following files: