SNode.C
Loading...
Searching...
No Matches
core::TimerEventPublisher Class Reference

#include <TimerEventPublisher.h>

Collaboration diagram for core::TimerEventPublisher:

Classes

class  timernode_lt
 

Public Member Functions

 TimerEventPublisher ()=default
 
utils::Timeval getNextTimeout (const utils::Timeval &currentTime)
 
void spanActiveEvents (const utils::Timeval &currentTime)
 
void unobserveDisableEvents ()
 
void remove (TimerEventReceiver *timer)
 
void erase (TimerEventReceiver *timer)
 
void insert (TimerEventReceiver *timer)
 
bool empty ()
 
void stop ()
 

Private Attributes

std::set< TimerEventReceiver *, timernode_lttimerList
 
std::list< TimerEventReceiver * > removedList
 

Detailed Description

Definition at line 38 of file TimerEventPublisher.h.

Constructor & Destructor Documentation

◆ TimerEventPublisher()

core::TimerEventPublisher::TimerEventPublisher ( )
default

Member Function Documentation

◆ empty()

bool core::TimerEventPublisher::empty ( )

Definition at line 76 of file TimerEventPublisher.cpp.

76 {
77 return timerList.empty();
78 }
std::set< TimerEventReceiver *, timernode_lt > timerList

◆ erase()

void core::TimerEventPublisher::erase ( TimerEventReceiver * timer)

Definition at line 68 of file TimerEventPublisher.cpp.

68 {
69 timerList.erase(timer);
70 }

◆ getNextTimeout()

utils::Timeval core::TimerEventPublisher::getNextTimeout ( const utils::Timeval & currentTime)

Definition at line 33 of file TimerEventPublisher.cpp.

33 {
34 utils::Timeval nextTimeout({LONG_MAX, 0});
35
36 if (!timerList.empty()) {
37 nextTimeout = (*(timerList.begin()))->getTimeoutRelative(currentTime);
38 }
39
40 return nextTimeout;
41 }

Referenced by core::EventMultiplexer::getNextTimeout().

Here is the caller graph for this function:

◆ insert()

void core::TimerEventPublisher::insert ( TimerEventReceiver * timer)

Definition at line 72 of file TimerEventPublisher.cpp.

72 {
73 timerList.insert(timer);
74 }

◆ remove()

void core::TimerEventPublisher::remove ( TimerEventReceiver * timer)

Definition at line 61 of file TimerEventPublisher.cpp.

61 {
62 if (std::find(timerList.begin(), timerList.end(), timer) != timerList.end() &&
63 std::find(removedList.begin(), removedList.end(), timer) == removedList.end()) {
64 removedList.push_back(timer);
65 }
66 }
std::list< TimerEventReceiver * > removedList

◆ spanActiveEvents()

void core::TimerEventPublisher::spanActiveEvents ( const utils::Timeval & currentTime)

Definition at line 43 of file TimerEventPublisher.cpp.

43 {
44 for (TimerEventReceiver* timerEventReceiver : timerList) {
45 if (timerEventReceiver->getTimeoutAbsolut() <= currentTime) {
46 timerEventReceiver->span();
47 } else {
48 break;
49 }
50 }
51 }

Referenced by core::EventMultiplexer::spanActiveEvents().

Here is the caller graph for this function:

◆ stop()

void core::TimerEventPublisher::stop ( )

Definition at line 80 of file TimerEventPublisher.cpp.

80 {
81 for (TimerEventReceiver* timer : timerList) { // cppcheck-suppress constVariablePointer
82 remove(timer);
83 }
84
86 }
void remove(TimerEventReceiver *timer)

References unobserveDisableEvents().

Referenced by core::EventMultiplexer::signal(), and core::EventMultiplexer::terminate().

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

◆ unobserveDisableEvents()

void core::TimerEventPublisher::unobserveDisableEvents ( )

Definition at line 53 of file TimerEventPublisher.cpp.

53 {
54 for (TimerEventReceiver* timerEventReceiver : removedList) {
55 timerList.erase(timerEventReceiver);
56 timerEventReceiver->unobservedEvent();
57 }
58 removedList.clear();
59 }

Referenced by core::EventMultiplexer::releaseExpiredResources(), and stop().

Here is the caller graph for this function:

Member Data Documentation

◆ removedList

std::list<TimerEventReceiver*> core::TimerEventPublisher::removedList
private

Definition at line 63 of file TimerEventPublisher.h.

◆ timerList

std::set<TimerEventReceiver*, timernode_lt> core::TimerEventPublisher::timerList
private

Definition at line 62 of file TimerEventPublisher.h.


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