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#include "core/EventMultiplexer.h"
44#include "core/DescriptorEventPublisher.h"
45#include "core/DescriptorEventReceiver.h"
46#include "core/DynamicLoader.h"
47#include "core/Event.h"
48#include "core/TimerEventPublisher.h"
50#ifndef DOXYGEN_SHOULD_SKIP_THIS
52#include "utils/Timeval.h"
66 :
descriptorEventPublishers{readDescriptorEventPublisher, writeDescriptorEventPublisher, exceptionDescriptorEventPublisher}
72 delete descriptorEventPublisher;
96 int activeDescriptorCount = 0;
133 const utils::
Timeval& currentTime,
134 const sigset_t& sigMask,
135 int& activeDescriptorCount) {
143 if (activeDescriptorCount < 0) {
144 if (errno == EINTR) {
185 nextTimeout
= std::min(descriptorEventPublisher
->getNextTimeout(currentTime
), nextTimeout);
210 return std::max(descriptorEventPublisher
->maxFd(), count);
utils::Timeval getNextTimeout(const utils::Timeval ¤tTime) const
void checkTimedOutEvents(const utils::Timeval ¤tTime)
void releaseDisabledEvents(const utils::Timeval ¤tTime)
int getObservedEventReceiverCount() const
static void execDlCloseDeleyed()
void insert(Event *event)
std::list< Event * > * publishQueue
std::list< Event * > * executeQueue
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)
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
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()
void dispatch(const utils::Timeval ¤tTime)
EventReceiver * getEventReceiver() const
TimerEventPublisher()=default
utils::Timeval getNextTimeout(const utils::Timeval ¤tTime)
void spanActiveEvents(const utils::Timeval ¤tTime)
void unobserveDisableEvents()
static Timeval currentTime()
Timeval & operator=(const Timeval &timeVal)
static const utils::Timeval MAX