SNode.C
Loading...
Searching...
No Matches
core::multiplexer::poll::DescriptorEventPublisher Class Reference

#include <DescriptorEventPublisher.h>

Inheritance diagram for core::multiplexer::poll::DescriptorEventPublisher:
Collaboration diagram for core::multiplexer::poll::DescriptorEventPublisher:

Public Member Functions

 DescriptorEventPublisher (const std::string &name, core::multiplexer::poll::PollFdsManager &pollFds, short events, short revents)
Public Member Functions inherited from core::DescriptorEventPublisher
 DescriptorEventPublisher ()=delete
virtual ~DescriptorEventPublisher ()
 DescriptorEventPublisher (const DescriptorEventPublisher &)=delete
DescriptorEventPublisheroperator= (const DescriptorEventPublisher &)=delete
void enable (DescriptorEventReceiver *descriptorEventReceiver)
void disable (DescriptorEventReceiver *descriptorEventReceiver)
void suspend (DescriptorEventReceiver *descriptorEventReceiver)
void resume (DescriptorEventReceiver *descriptorEventReceiver)
void checkTimedOutEvents (const utils::Timeval &currentTime)
void releaseDisabledEvents (const utils::Timeval &currentTime)
int getObservedEventReceiverCount () const
int maxFd () const
utils::Timeval getNextTimeout (const utils::Timeval &currentTime) const
void signal (int sigNum)
void disable ()
const std::string & getName () const

Private Member Functions

void muxAdd (core::DescriptorEventReceiver *eventReceiver) override
void muxDel (int fd) override
void muxOn (core::DescriptorEventReceiver *eventReceiver) override
void muxOff (core::DescriptorEventReceiver *eventReceiver) override
void spanActiveEvents () override

Private Attributes

core::multiplexer::poll::PollFdsManagerpollFds
short events
short revents

Additional Inherited Members

Protected Member Functions inherited from core::DescriptorEventPublisher
 DescriptorEventPublisher (std::string name)
Protected Attributes inherited from core::DescriptorEventPublisher
std::map< int, std::list< DescriptorEventReceiver * > > observedEventReceiverLists
unsigned long eventCounter = 0

Detailed Description

Definition at line 59 of file DescriptorEventPublisher.h.

Constructor & Destructor Documentation

◆ DescriptorEventPublisher()

core::multiplexer::poll::DescriptorEventPublisher::DescriptorEventPublisher ( const std::string & name,
core::multiplexer::poll::PollFdsManager & pollFds,
short events,
short revents )

Definition at line 66 of file DescriptorEventPublisher.cpp.

References core::DescriptorEventPublisher::DescriptorEventPublisher(), events, pollFds, and revents.

Here is the call graph for this function:

Member Function Documentation

◆ muxAdd()

void core::multiplexer::poll::DescriptorEventPublisher::muxAdd ( core::DescriptorEventReceiver * eventReceiver)
overrideprivatevirtual

Implements core::DescriptorEventPublisher.

Definition at line 73 of file DescriptorEventPublisher.cpp.

73 {
74 pollFds.muxAdd(eventReceiver, events);
75 }

References events, core::multiplexer::poll::PollFdsManager::muxAdd(), and pollFds.

Here is the call graph for this function:

◆ muxDel()

void core::multiplexer::poll::DescriptorEventPublisher::muxDel ( int fd)
overrideprivatevirtual

Implements core::DescriptorEventPublisher.

Definition at line 77 of file DescriptorEventPublisher.cpp.

77 {
78 pollFds.muxDel(fd, events);
79 }

References events, core::multiplexer::poll::PollFdsManager::muxDel(), and pollFds.

Here is the call graph for this function:

◆ muxOff()

void core::multiplexer::poll::DescriptorEventPublisher::muxOff ( core::DescriptorEventReceiver * eventReceiver)
overrideprivatevirtual

Implements core::DescriptorEventPublisher.

Definition at line 85 of file DescriptorEventPublisher.cpp.

85 {
86 pollFds.muxOff(eventReceiver, events);
87 }

References events, core::multiplexer::poll::PollFdsManager::muxOff(), and pollFds.

Here is the call graph for this function:

◆ muxOn()

void core::multiplexer::poll::DescriptorEventPublisher::muxOn ( core::DescriptorEventReceiver * eventReceiver)
overrideprivatevirtual

Implements core::DescriptorEventPublisher.

Definition at line 81 of file DescriptorEventPublisher.cpp.

81 {
82 pollFds.muxOn(eventReceiver, events);
83 }

References events, core::multiplexer::poll::PollFdsManager::muxOn(), and pollFds.

Here is the call graph for this function:

◆ spanActiveEvents()

void core::multiplexer::poll::DescriptorEventPublisher::spanActiveEvents ( )
overrideprivatevirtual

Implements core::DescriptorEventPublisher.

Definition at line 89 of file DescriptorEventPublisher.cpp.

89 {
90 pollfd* pollfds = pollFds.getEvents();
91
92 const PollFdsManager::pollfdindex_map& pollFdsIndices = pollFds.getPollFdIndices();
93
94 for (auto& [fd, eventReceivers] : observedEventReceiverLists) {
95 const pollfd& pollFd = pollfds[pollFdsIndices.find(fd)->second.index];
96
97 if ((pollFd.events & events) != 0 && (pollFd.revents & revents) != 0) {
98 core::DescriptorEventReceiver* eventReceiver = eventReceivers.front();
100 eventReceiver->span();
101 }
102 }
103 }
std::map< int, std::list< DescriptorEventReceiver * > > observedEventReceiverLists
std::unordered_map< int, PollFdIndex, std::hash< int >, std::equal_to<>, VarSizeTypeAllocator< std::pair< const int, PollFdIndex >, nfds_t > > pollfdindex_map

References core::DescriptorEventPublisher::eventCounter, events, core::DescriptorEventPublisher::observedEventReceiverLists, pollFds, revents, and core::EventReceiver::span().

Here is the call graph for this function:

Member Data Documentation

◆ events

short core::multiplexer::poll::DescriptorEventPublisher::events
private

◆ pollFds

core::multiplexer::poll::PollFdsManager& core::multiplexer::poll::DescriptorEventPublisher::pollFds
private

◆ revents

short core::multiplexer::poll::DescriptorEventPublisher::revents
private

Definition at line 73 of file DescriptorEventPublisher.h.

Referenced by DescriptorEventPublisher(), and spanActiveEvents().


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