2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
42#ifndef CORE_EVENTMULTIPLEXER_H
43#define CORE_EVENTMULTIPLEXER_H
45#include "core/TickStatus.h"
57#ifndef DOXYGEN_SHOULD_SKIP_THIS
59#include "utils/system/signal.h"
121 const utils::
Timeval& currentTime,
122 const sigset_t& sigMask,
123 int& activeDescriptorCount);
static unsigned long tickCounter
EventMultiplexer & getEventMultiplexer()
EventLoop(const EventLoop &eventLoop)=delete
static core::State getEventLoopState()
TickStatus _tick(const utils::Timeval &timeOut)
static EventLoop & instance()
core::EventMultiplexer & eventMultiplexer
static core::State eventLoopState
EventLoop & operator=(const EventLoop &eventLoop)=delete
static void stoponsig(int sig)
static int start(const utils::Timeval &timeOut)
static TickStatus tick(const utils::Timeval &timeOut)
static bool init(int argc, char *argv[])
static unsigned long getTickCounter()
void insert(Event *event)
std::list< Event * > * publishQueue
EventQueue & operator=(const EventQueue &)=delete
std::list< Event * > * executeQueue
EventQueue & operator=(EventQueue &&)=delete
EventQueue(EventQueue &&)=delete
EventQueue(const EventQueue &)=delete
void execute(const utils::Timeval ¤tTime)
void remove(Event *event)
virtual int monitorDescriptors(utils::Timeval &tickTimeOut, const sigset_t &sigMask)=0
void releaseExpiredResources(const utils::Timeval ¤tTime)
utils::Timeval getNextTimeout(const utils::Timeval ¤tTime)
void checkTimedOutEvents(const utils::Timeval ¤tTime)
TickStatus waitForEvents(const utils::Timeval &tickTimeOut, const utils::Timeval ¤tTime, const sigset_t &sigMask, int &activeDescriptorCount)
EventMultiplexer(const EventMultiplexer &)=delete
TimerEventPublisher & getTimerEventPublisher()
TickStatus tick(const utils::Timeval &tickTimeOut, const sigset_t &sigMask)
void spanActiveEvents(const utils::Timeval ¤tTime, int activeDescriptorCount)
void span(core::Event *event)
std::array< DescriptorEventPublisher *, 3 > descriptorEventPublishers
EventMultiplexer & operator=(const EventMultiplexer &)=delete
virtual void spanActiveEvents(int activeDescriptorCount)=0
DescriptorEventPublisher & getDescriptorEventPublisher(DISP_TYPE dispType)
void relax(core::Event *event)
int observedEventReceiverCount()
EventMultiplexer(DescriptorEventPublisher *readDescriptorEventPublisher, DescriptorEventPublisher *writeDescriptorEventPublisher, DescriptorEventPublisher *exceptionDescriptorEventPublisher)
void executeEventQueue(const utils::Timeval ¤tTime)
core::TimerEventPublisher *const timerEventPublisher
virtual ~EventMultiplexer()
virtual void onEvent(const utils::Timeval ¤tTime)=0
const std::string & getName() const
void dispatch(const utils::Timeval ¤tTime)
EventMultiplexer & eventMultiplexer
EventReceiver * eventReceiver
Event(EventReceiver *eventReceiver, const std::string &name)
EventReceiver * getEventReceiver() const