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 55 of file EventMultiplexer.h.

Constructor & Destructor Documentation

◆ EventMultiplexer()

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

Definition at line 63 of file EventMultiplexer.cpp.

66 EPOLLIN,
67 EPOLLIN | EPOLLHUP | EPOLLRDHUP | EPOLLERR),
70 EPOLLOUT,
71 EPOLLOUT),
74 EPOLLPRI,
75 EPOLLPRI))
76 , epfd(core::system::epoll_create1(EPOLL_CLOEXEC)) {
77 epoll_event event{};
78 event.events = EPOLLIN;
79
82
85
88
89 LOG(DEBUG) << "Core::multiplexer: epoll";
90 }
std::array< DescriptorEventPublisher *, 3 > descriptorEventPublishers
int epoll_create1(int flags)
Definition epoll.cpp:52
int epoll_ctl(int epfd, int op, int fd, epoll_event *event)
Definition epoll.cpp:67

References core::multiplexer::epoll::DescriptorEventPublisher::DescriptorEventPublisher(), core::EventMultiplexer::descriptorEventPublishers, epfd, epfds, core::system::epoll_create1(), core::system::epoll_ctl(), core::EventMultiplexer::EventMultiplexer(), core::EventMultiplexer::EX, core::EventMultiplexer::RD, and core::EventMultiplexer::WR.

Here is the call graph for this function:

◆ ~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 92 of file EventMultiplexer.cpp.

92 {
93 return core::system::epoll_pwait(epfd, ePollEvents, 3, tickTimeout.getMs(), &sigMask);
94 }
int getMs() const
Definition Timeval.cpp:177
int epoll_pwait(int epfd, struct epoll_event *events, int maxevents, int timeout, const sigset_t *sigMask)
Definition epoll.cpp:62

References epfd, core::system::epoll_pwait(), ePollEvents, and utils::Timeval::getMs().

Here is the call graph for this function:

◆ spanActiveEvents()

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

Implements core::EventMultiplexer.

Definition at line 96 of file EventMultiplexer.cpp.

96 {
97 for (int i = 0; i < activeDescriptorCount; i++) {
98 if ((ePollEvents[i].events & EPOLLIN) != 0) {
100 }
101 }
102 }
void spanActiveEvents(int activeDescriptorCount) override

References ePollEvents, and core::DescriptorEventPublisher::spanActiveEvents().

Here is the call graph for this function:

Member Data Documentation

◆ epfd

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

Definition at line 64 of file EventMultiplexer.h.

Referenced by EventMultiplexer(), and monitorDescriptors().

◆ epfds

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

Definition at line 66 of file EventMultiplexer.h.

Referenced by EventMultiplexer().

◆ ePollEvents

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

Definition at line 67 of file EventMultiplexer.h.

67{};

Referenced by monitorDescriptors(), and spanActiveEvents().


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