SNode.C
|
#include <EventMultiplexer.h>
Classes | |
class | EventQueue |
Public Types | |
enum | DISP_TYPE { RD = 0 , WR = 1 , EX = 2 } |
Public Member Functions | |
EventMultiplexer (DescriptorEventPublisher *readDescriptorEventPublisher, DescriptorEventPublisher *writeDescriptorEventPublisher, DescriptorEventPublisher *exceptionDescriptorEventPublisher) | |
virtual | ~EventMultiplexer () |
EventMultiplexer (const EventMultiplexer &)=delete | |
EventMultiplexer & | operator= (const EventMultiplexer &)=delete |
DescriptorEventPublisher & | getDescriptorEventPublisher (DISP_TYPE dispType) |
TimerEventPublisher & | getTimerEventPublisher () |
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) |
Protected Member Functions | |
int | maxFd () |
Protected Attributes | |
std::array< DescriptorEventPublisher *, 3 > | descriptorEventPublishers |
Private Member Functions | |
TickStatus | waitForEvents (const utils::Timeval &tickTimeOut, const utils::Timeval ¤tTime, const sigset_t &sigMask, int &activeDescriptorCount) |
void | spanActiveEvents (const utils::Timeval ¤tTime, int activeDescriptorCount) |
void | executeEventQueue (const utils::Timeval ¤tTime) |
void | checkTimedOutEvents (const utils::Timeval ¤tTime) |
void | releaseExpiredResources (const utils::Timeval ¤tTime) |
utils::Timeval | getNextTimeout (const utils::Timeval ¤tTime) |
virtual void | spanActiveEvents (int activeDescriptorCount)=0 |
virtual int | monitorDescriptors (utils::Timeval &tickTimeOut, const sigset_t &sigMask)=0 |
int | observedEventReceiverCount () |
Private Attributes | |
core::TimerEventPublisher *const | timerEventPublisher |
EventQueue | eventQueue |
Definition at line 68 of file EventMultiplexer.h.
core::EventMultiplexer::EventMultiplexer | ( | DescriptorEventPublisher * | readDescriptorEventPublisher, |
DescriptorEventPublisher * | writeDescriptorEventPublisher, | ||
DescriptorEventPublisher * | exceptionDescriptorEventPublisher | ||
) |
Definition at line 63 of file EventMultiplexer.cpp.
References descriptorEventPublishers.
Referenced by core::multiplexer::epoll::EventMultiplexer::EventMultiplexer(), and core::multiplexer::select::EventMultiplexer::EventMultiplexer().
|
virtual |
Reimplemented in core::multiplexer::epoll::EventMultiplexer, core::multiplexer::poll::EventMultiplexer, and core::multiplexer::select::EventMultiplexer.
Definition at line 70 of file EventMultiplexer.cpp.
References descriptorEventPublishers, and timerEventPublisher.
|
delete |
|
private |
Definition at line 166 of file EventMultiplexer.cpp.
References core::DescriptorEventPublisher::checkTimedOutEvents(), and descriptorEventPublishers.
Referenced by tick().
void core::EventMultiplexer::clearEventQueue | ( | ) |
Definition at line 128 of file EventMultiplexer.cpp.
References core::EventMultiplexer::EventQueue::clear(), and eventQueue.
Referenced by core::EventLoop::tick().
|
private |
Definition at line 162 of file EventMultiplexer.cpp.
References eventQueue, and core::EventMultiplexer::EventQueue::execute().
Referenced by tick().
DescriptorEventPublisher & core::EventMultiplexer::getDescriptorEventPublisher | ( | DISP_TYPE | dispType | ) |
Definition at line 77 of file EventMultiplexer.cpp.
References descriptorEventPublishers.
Referenced by core::eventreceiver::AcceptEventReceiver::AcceptEventReceiver(), core::eventreceiver::ConnectEventReceiver::ConnectEventReceiver(), core::eventreceiver::ExceptionalConditionEventReceiver::ExceptionalConditionEventReceiver(), core::eventreceiver::ReadEventReceiver::ReadEventReceiver(), and core::eventreceiver::WriteEventReceiver::WriteEventReceiver().
|
private |
Definition at line 180 of file EventMultiplexer.cpp.
References descriptorEventPublishers, core::EventMultiplexer::EventQueue::empty(), eventQueue, core::TimerEventPublisher::getNextTimeout(), core::DescriptorEventPublisher::getNextTimeout(), core::DescriptorEventReceiver::TIMEOUT::MAX, utils::Timeval::operator=(), timerEventPublisher, and utils::Timeval::Timeval().
Referenced by waitForEvents().
core::TimerEventPublisher & core::EventMultiplexer::getTimerEventPublisher | ( | ) |
Definition at line 81 of file EventMultiplexer.cpp.
References timerEventPublisher.
Referenced by core::TimerEventReceiver::TimerEventReceiver().
|
protected |
Definition at line 205 of file EventMultiplexer.cpp.
References descriptorEventPublishers, and core::DescriptorEventPublisher::maxFd().
Referenced by core::multiplexer::select::EventMultiplexer::monitorDescriptors().
|
privatepure virtual |
Implemented in core::multiplexer::epoll::EventMultiplexer, core::multiplexer::poll::EventMultiplexer, and core::multiplexer::select::EventMultiplexer.
Referenced by waitForEvents().
|
private |
Definition at line 196 of file EventMultiplexer.cpp.
References descriptorEventPublishers, and core::DescriptorEventPublisher::getObservedEventReceiverCount().
Referenced by waitForEvents().
|
delete |
void core::EventMultiplexer::relax | ( | core::Event * | event | ) |
Definition at line 89 of file EventMultiplexer.cpp.
References eventQueue, and core::EventMultiplexer::EventQueue::remove().
Referenced by core::Event::relax().
|
private |
Definition at line 172 of file EventMultiplexer.cpp.
References descriptorEventPublishers, core::DynamicLoader::execDlCloseDeleyed(), core::DescriptorEventPublisher::releaseDisabledEvents(), timerEventPublisher, and core::TimerEventPublisher::unobserveDisableEvents().
Referenced by signal(), terminate(), and tick().
void core::EventMultiplexer::signal | ( | int | sigNum | ) |
Definition at line 110 of file EventMultiplexer.cpp.
References utils::Timeval::currentTime(), descriptorEventPublishers, releaseExpiredResources(), core::DescriptorEventPublisher::signal(), core::TimerEventPublisher::stop(), and timerEventPublisher.
Referenced by core::EventLoop::free().
void core::EventMultiplexer::span | ( | core::Event * | event | ) |
Definition at line 85 of file EventMultiplexer.cpp.
References eventQueue, and core::EventMultiplexer::EventQueue::insert().
Referenced by core::Event::span().
|
private |
Definition at line 157 of file EventMultiplexer.cpp.
References core::TimerEventPublisher::spanActiveEvents(), spanActiveEvents(), and timerEventPublisher.
Referenced by tick().
|
privatepure virtual |
Implemented in core::multiplexer::epoll::EventMultiplexer, core::multiplexer::poll::EventMultiplexer, and core::multiplexer::select::EventMultiplexer.
Referenced by spanActiveEvents().
void core::EventMultiplexer::terminate | ( | ) |
Definition at line 119 of file EventMultiplexer.cpp.
References utils::Timeval::currentTime(), descriptorEventPublishers, core::DescriptorEventPublisher::disable(), releaseExpiredResources(), core::TimerEventPublisher::stop(), and timerEventPublisher.
Referenced by core::EventLoop::free().
TickStatus core::EventMultiplexer::tick | ( | const utils::Timeval & | tickTimeOut, |
const sigset_t & | sigMask | ||
) |
Definition at line 93 of file EventMultiplexer.cpp.
References checkTimedOutEvents(), utils::Timeval::currentTime(), executeEventQueue(), releaseExpiredResources(), spanActiveEvents(), core::SUCCESS, and waitForEvents().
Referenced by core::EventLoop::_tick().
|
private |
Definition at line 132 of file EventMultiplexer.cpp.
References core::TimerEventPublisher::empty(), core::EventMultiplexer::EventQueue::empty(), eventQueue, getNextTimeout(), core::INTERRUPTED, monitorDescriptors(), core::NOOBSERVER, observedEventReceiverCount(), core::SUCCESS, timerEventPublisher, and core::TRACE.
Referenced by tick().
|
protected |
Definition at line 139 of file EventMultiplexer.h.
Referenced by checkTimedOutEvents(), core::multiplexer::epoll::EventMultiplexer::EventMultiplexer(), EventMultiplexer(), getDescriptorEventPublisher(), getNextTimeout(), maxFd(), observedEventReceiverCount(), releaseExpiredResources(), signal(), core::multiplexer::poll::EventMultiplexer::spanActiveEvents(), core::multiplexer::select::EventMultiplexer::spanActiveEvents(), terminate(), and ~EventMultiplexer().
|
private |
Definition at line 146 of file EventMultiplexer.h.
Referenced by clearEventQueue(), executeEventQueue(), getNextTimeout(), relax(), span(), and waitForEvents().
|
private |
Definition at line 144 of file EventMultiplexer.h.
Referenced by getNextTimeout(), getTimerEventPublisher(), releaseExpiredResources(), signal(), spanActiveEvents(), terminate(), waitForEvents(), and ~EventMultiplexer().