Webserv
Loading...
Searching...
No Matches
network::EventDispatcher Class Reference

Centralised event demultiplexer and dispatcher for managing I/O events. More...

#include <EventDispatcher.hpp>

Public Member Functions

 ~EventDispatcher ()
void registerHandler (IEventHandler *handler)
void removeHandler (IEventHandler *handler)
void handleEvents ()
void requestShutdown ()
void enableRead (IEventHandler *handler)
 Adds EPOLLIN to the monitored events.
void disableRead (IEventHandler *handler)
 Removes EPOLLIN from the monitored events.
void enableWrite (IEventHandler *handler)
 Adds EPOLLOUT to the monitored events.
void disableWrite (IEventHandler *handler)
 Removes EPOLLOUT from the monitored events.

Static Public Member Functions

static EventDispatchergetInstance ()

Private Member Functions

void updateEventMask (IEventHandler *handler, uint32_t newMask)
void cleanUpGarbage ()
 EventDispatcher ()
 EventDispatcher (const EventDispatcher &)
EventDispatcheroperator= (const EventDispatcher &)

Private Attributes

EpollManager epollManager_
std::map< int, IEventHandler * > handlers_
std::set< IEventHandler * > pendingRemovals_
std::set< IEventHandler * > activeHandlers_

Detailed Description

Centralised event demultiplexer and dispatcher for managing I/O events.

EventDispatcher coordinates between the event detection mechanism (epoll) and register event handlers. It maintains a registry of handlers, waits for events to occur on monitored file descriptors, and dispatches events to appropriate handlers. This implements the core of the ClientHandler pattern for non-blocking, event-driven I/O.

Constructor & Destructor Documentation

◆ ~EventDispatcher()

network::EventDispatcher::~EventDispatcher ( )

◆ EventDispatcher() [1/2]

network::EventDispatcher::EventDispatcher ( )
private

◆ EventDispatcher() [2/2]

network::EventDispatcher::EventDispatcher ( const EventDispatcher & )
private

Member Function Documentation

◆ cleanUpGarbage()

void network::EventDispatcher::cleanUpGarbage ( )
private

◆ disableRead()

void network::EventDispatcher::disableRead ( IEventHandler * handler)

Removes EPOLLIN from the monitored events.

◆ disableWrite()

void network::EventDispatcher::disableWrite ( IEventHandler * handler)

Removes EPOLLOUT from the monitored events.

◆ enableRead()

void network::EventDispatcher::enableRead ( IEventHandler * handler)

Adds EPOLLIN to the monitored events.

Note
No-op if already reading.

◆ enableWrite()

void network::EventDispatcher::enableWrite ( IEventHandler * handler)

Adds EPOLLOUT to the monitored events.

Note
No-op if already writing.

◆ getInstance()

EventDispatcher & network::EventDispatcher::getInstance ( )
static

◆ handleEvents()

void network::EventDispatcher::handleEvents ( )

◆ operator=()

EventDispatcher & network::EventDispatcher::operator= ( const EventDispatcher & )
private

◆ registerHandler()

void network::EventDispatcher::registerHandler ( IEventHandler * handler)

◆ removeHandler()

void network::EventDispatcher::removeHandler ( IEventHandler * handler)

◆ requestShutdown()

void network::EventDispatcher::requestShutdown ( )

◆ updateEventMask()

void network::EventDispatcher::updateEventMask ( IEventHandler * handler,
uint32_t newMask )
private

Member Data Documentation

◆ activeHandlers_

std::set<IEventHandler *> network::EventDispatcher::activeHandlers_
private

◆ epollManager_

EpollManager network::EventDispatcher::epollManager_
private

◆ handlers_

std::map<int, IEventHandler *> network::EventDispatcher::handlers_
private

◆ pendingRemovals_

std::set<IEventHandler *> network::EventDispatcher::pendingRemovals_
private

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