SNode.C
Loading...
Searching...
No Matches
core::multiplexer::epoll::EventMultiplexer Class Reference

#include <EventMultiplexer.h>

Inheritance diagram for core::multiplexer::epoll::EventMultiplexer:
Collaboration diagram for core::multiplexer::epoll::EventMultiplexer:

Public Member Functions

 EventMultiplexer ()
 
 ~EventMultiplexer () override=default
 
- Public Member Functions inherited from core::EventMultiplexer
 EventMultiplexer (DescriptorEventPublisher *readDescriptorEventPublisher, DescriptorEventPublisher *writeDescriptorEventPublisher, DescriptorEventPublisher *exceptionDescriptorEventPublisher)
 
 EventMultiplexer (const EventMultiplexer &)=delete
 
EventMultiplexeroperator= (const EventMultiplexer &)=delete
 
DescriptorEventPublishergetDescriptorEventPublisher (DISP_TYPE dispType)
 
TimerEventPublishergetTimerEventPublisher ()
 
void span (core::Event *event)
 
void relax (core::Event *event)
 
void signal (int sigNum)
 
void terminate ()
 
void clearEventQueue ()
 
TickStatus tick (const utils::Timeval &tickTimeOut, const sigset_t &sigMask)
 

Private Member Functions

int monitorDescriptors (utils::Timeval &tickTimeout, const sigset_t &sigMask) override
 
void spanActiveEvents (int activeDescriptorCount) override
 

Private Attributes

int epfd
 
int epfds [3]
 
epoll_event ePollEvents [3] {}
 

Additional Inherited Members

- Public Types inherited from core::EventMultiplexer
enum  DISP_TYPE { RD = 0 , WR = 1 , EX = 2 }
 
- Protected Member Functions inherited from core::EventMultiplexer
int maxFd ()
 
- Protected Attributes inherited from core::EventMultiplexer
std::array< DescriptorEventPublisher *, 3 > descriptorEventPublishers
 

Detailed Description

Definition at line 33 of file EventMultiplexer.h.

Constructor & Destructor Documentation

◆ EventMultiplexer()

core::multiplexer::epoll::EventMultiplexer::EventMultiplexer ( )

Definition at line 41 of file EventMultiplexer.cpp.

44 EPOLLIN,
45 EPOLLIN | EPOLLHUP | EPOLLRDHUP | EPOLLERR),
48 EPOLLOUT,
49 EPOLLOUT),
52 EPOLLPRI,
53 EPOLLPRI))
54 , epfd(core::system::epoll_create1(EPOLL_CLOEXEC)) {
55 epoll_event event{};
56 event.events = EPOLLIN;
57
60
63
66
67 LOG(DEBUG) << "Core::multiplexer: epoll";
68 }
std::array< DescriptorEventPublisher *, 3 > descriptorEventPublishers
int epoll_create1(int flags)
Definition epoll.cpp:30
int epoll_ctl(int epfd, int op, int fd, epoll_event *event)
Definition epoll.cpp:45

◆ ~EventMultiplexer()

core::multiplexer::epoll::EventMultiplexer::~EventMultiplexer ( )
overridevirtualdefault

Reimplemented from core::EventMultiplexer.

Member Function Documentation

◆ monitorDescriptors()

int core::multiplexer::epoll::EventMultiplexer::monitorDescriptors ( utils::Timeval & tickTimeout,
const sigset_t & sigMask )
overrideprivatevirtual

Implements core::EventMultiplexer.

Definition at line 70 of file EventMultiplexer.cpp.

70 {
71 return core::system::epoll_pwait(epfd, ePollEvents, 3, tickTimeout.getMs(), &sigMask);
72 }
int getMs() const
Definition Timeval.cpp:155
int epoll_pwait(int epfd, struct epoll_event *events, int maxevents, int timeout, const sigset_t *sigMask)
Definition epoll.cpp:40

◆ spanActiveEvents()

void core::multiplexer::epoll::EventMultiplexer::spanActiveEvents ( int activeDescriptorCount)
overrideprivatevirtual

Implements core::EventMultiplexer.

Definition at line 74 of file EventMultiplexer.cpp.

74 {
75 for (int i = 0; i < activeDescriptorCount; i++) {
76 if ((ePollEvents[i].events & EPOLLIN) != 0) {
78 }
79 }
80 }
void spanActiveEvents(int activeDescriptorCount) override

Member Data Documentation

◆ epfd

int core::multiplexer::epoll::EventMultiplexer::epfd
private

Definition at line 42 of file EventMultiplexer.h.

◆ epfds

int core::multiplexer::epoll::EventMultiplexer::epfds[3]
private

Definition at line 44 of file EventMultiplexer.h.

◆ ePollEvents

epoll_event core::multiplexer::epoll::EventMultiplexer::ePollEvents[3] {}
private

Definition at line 45 of file EventMultiplexer.h.

45{};

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