OpenCBDC Transaction Processor
Loading...
Searching...
No Matches
cbdc::rpc::event_handler Class Referenceabstract

Event handler interface for tracking events on non-blocking file descriptors. More...

#include <event_handler.hpp>

Inheritance diagram for cbdc::rpc::event_handler:

Public Types

enum class  event_type { remove , in , out , inout }
 Type of event to register interest in. More...
 
using event = std::pair<int, bool>
 Type alias for an event.
 

Public Member Functions

virtual ~event_handler ()=default
 
virtual auto init () -> bool=0
 Initializes the event handler.
 
virtual void set_timeout (long timeout_ms)=0
 Sets the timeout for poll to return even if there are no events.
 
virtual void register_fd (int fd, event_type et)=0
 Registers a file descriptor to track for events.
 
virtual auto poll () -> std::optional< std::vector< event > >=0
 Wait for events on tracked file descriptors.
 

Detailed Description

Event handler interface for tracking events on non-blocking file descriptors.

Definition at line 16 of file event_handler.hpp.

Member Typedef Documentation

◆ event

using cbdc::rpc::event_handler::event = std::pair<int, bool>

Type alias for an event.

First value is the file descriptor, second is true if the event is a timeout.

Definition at line 34 of file event_handler.hpp.

Member Enumeration Documentation

◆ event_type

Type of event to register interest in.

Enumerator
remove 

Remove file descriptor.

in 

Ready to read event.

out 

Ready to write event.

inout 

Read and write events.

Definition at line 19 of file event_handler.hpp.

Constructor & Destructor Documentation

◆ ~event_handler()

virtual cbdc::rpc::event_handler::~event_handler ( )
virtualdefault

Member Function Documentation

◆ init()

virtual auto cbdc::rpc::event_handler::init ( ) -> bool
pure virtual

Initializes the event handler.

Returns
true if initialization succeeded.

Implemented in cbdc::rpc::epoll_event_handler, and cbdc::rpc::kqueue_event_handler.

◆ poll()

virtual auto cbdc::rpc::event_handler::poll ( ) -> std::optional< std::vector< event > >
pure virtual

Wait for events on tracked file descriptors.

Blocks until at least one event is available, or the timeout expires.

Returns
list of events, or std::nullopt if there was an error during polling.

Implemented in cbdc::rpc::epoll_event_handler, and cbdc::rpc::kqueue_event_handler.

◆ register_fd()

virtual void cbdc::rpc::event_handler::register_fd ( int fd,
event_type et )
pure virtual

Registers a file descriptor to track for events.

Parameters
fdfile descriptor.
etevent type.

Implemented in cbdc::rpc::epoll_event_handler, and cbdc::rpc::kqueue_event_handler.

◆ set_timeout()

virtual void cbdc::rpc::event_handler::set_timeout ( long timeout_ms)
pure virtual

Sets the timeout for poll to return even if there are no events.

Parameters
timeout_mstimeout in milliseconds. 0 to disable timeout.

Implemented in cbdc::rpc::epoll_event_handler, and cbdc::rpc::kqueue_event_handler.


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