2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
20#ifndef CORE_EVENTMULTIPLEXER_H
21#define CORE_EVENTMULTIPLEXER_H
23#include "core/TickStatus.h"
35#ifndef DOXYGEN_SHOULD_SKIP_THIS
37#include "utils/system/signal.h"
99 const utils::
Timeval& currentTime,
100 const sigset_t& sigMask,
101 int& activeDescriptorCount);
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()
void spanActiveEvents() override
core::multiplexer::poll::PollFdsManager & pollFds
DescriptorEventPublisher(const std::string &name, core::multiplexer::poll::PollFdsManager &pollFds, short events, short revents)
void muxOff(core::DescriptorEventReceiver *eventReceiver) override
void muxDel(int fd) override
void muxAdd(core::DescriptorEventReceiver *eventReceiver) override
void muxOn(core::DescriptorEventReceiver *eventReceiver) override
int monitorDescriptors(utils::Timeval &tickTimeOut, const sigset_t &sigMask) override
PollFdsManager pollFdsManager
void spanActiveEvents(int activeDescriptorCount) override
~EventMultiplexer() override=default
void muxOff(const DescriptorEventReceiver *eventReceiver, short event)
std::vector< pollfd > pollfds
void muxAdd(core::DescriptorEventReceiver *eventReceiver, short event)
const std::unordered_map< int, PollFdIndex > & getPollFdIndices() const
void muxDel(int fd, short event)
nfds_t getCurrentSize() const
std::unordered_map< int, PollFdIndex > pollFdIndices
void muxOn(const core::DescriptorEventReceiver *eventReceiver, short event)
std::vector< pollfd >::size_type index