OpenCBDC Transaction Processor
Loading...
Searching...
No Matches
epoll_event_handler.hpp
Go to the documentation of this file.
1// Copyright (c) 2022 MIT Digital Currency Initiative,
2// Federal Reserve Bank of Boston
3// Distributed under the MIT software license, see the accompanying
4// file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
6#ifndef OPENCBDC_TX_SRC_RPC_EPOLL_EVENT_HANDLER_H_
7#define OPENCBDC_TX_SRC_RPC_EPOLL_EVENT_HANDLER_H_
8
9#include "event_handler.hpp"
10
11#include <set>
12
13namespace cbdc::rpc {
16 public:
18 ~epoll_event_handler() override;
19
22 -> epoll_event_handler& = default;
25 -> epoll_event_handler& = default;
26
28 auto init() -> bool override;
29
31 void set_timeout(long timeout_ms) override;
32
34 void register_fd(int fd, event_type et) override;
35
37 auto poll() -> std::optional<std::vector<event>> override;
38
39 private:
40 int m_epoll{};
41 long m_timeout_ms{1000};
42 bool m_timeout_enabled{true};
43 std::set<int> m_tracked;
44 };
45}
46
47#endif
Event handler implementation using Linux epoll.
epoll_event_handler(epoll_event_handler &&)=default
auto init() -> bool override
Initializes the event handler.
auto operator=(epoll_event_handler &&) -> epoll_event_handler &=default
epoll_event_handler(const epoll_event_handler &)=default
auto operator=(const epoll_event_handler &) -> epoll_event_handler &=default
void set_timeout(long timeout_ms) override
Sets the timeout for poll to return even if there are no events.
auto poll() -> std::optional< std::vector< event > > override
Wait for events on tracked file descriptors.
void register_fd(int fd, event_type et) override
Registers a file descriptor to track for events.
Event handler interface for tracking events on non-blocking file descriptors.
event_type
Type of event to register interest in.