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_POLL_EVENTDISPATCHER_H
43#define CORE_POLL_EVENTDISPATCHER_H
45#include "core/EventMultiplexer.h"
51#ifndef DOXYGEN_SHOULD_SKIP_THIS
53#include "core/system/poll.h"
60#include <unordered_map>
66namespace core::multiplexer::
poll {
70 template <
typename T,
typename S>
76 using const_pointer =
const T*;
77 using void_pointer =
void*;
78 using const_void_pointer =
const void*;
80 using difference_type = std::ptrdiff_t;
104 throw std::bad_alloc();
107 return static_cast<pointer>(::operator
new(n *
sizeof(T)));
112 ::operator
delete(p);
117 return std::numeric_limits<size_type>::max() /
sizeof(T);
121 template <
typename U,
typename... Args>
123 ::
new (
static_cast<
void*>(p)) U(std::forward<Args>(args)...);
127 template <
typename U>
133 template <
typename U>
138 template <
typename U>
161 void muxDel(
int fd,
short event);
virtual void spanActiveEvents()=0
int getRegisteredFd() const
std::array< DescriptorEventPublisher *, 3 > descriptorEventPublishers
int monitorDescriptors(utils::Timeval &tickTimeOut, const sigset_t &sigMask) override
PollFdsManager pollFdsManager
void spanActiveEvents(int activeDescriptorCount) override
~EventMultiplexer() override=default
VarSizeTypeAllocator(const VarSizeTypeAllocator< U, S > &) noexcept
void construct(U *p, Args &&... args)
void destroy(U *p) noexcept
size_type max_size() const noexcept
VarSizeTypeAllocator(const VarSizeTypeAllocator &) noexcept=default
void deallocate(pointer p, size_type) noexcept
bool operator==(const VarSizeTypeAllocator< U, S > &) const noexcept
pointer allocate(size_type n)
bool operator!=(const VarSizeTypeAllocator< U, S > &) const noexcept
VarSizeTypeAllocator() noexcept
void muxOff(const DescriptorEventReceiver *eventReceiver, short event)
void muxAdd(core::DescriptorEventReceiver *eventReceiver, short event)
pollfdindex_map pollFdIndices
void muxDel(int fd, short event)
nfds_t getCurrentSize() const
const pollfdindex_map & getPollFdIndices() const
void muxOn(const core::DescriptorEventReceiver *eventReceiver, short event)
timespec getTimespec() const
pollfd_vector::size_type index