OpenCBDC Transaction Processor
Loading...
Searching...
No Matches
kqueue_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_KQUEUE_EVENT_HANDLER_H_
7#define OPENCBDC_TX_SRC_RPC_KQUEUE_EVENT_HANDLER_H_
8
9#include "event_handler.hpp"
10
11#include <map>
12#include <set>
13#include <sys/event.h>
14
15namespace cbdc::rpc {
17 class kqueue_event_handler final : public event_handler {
18 public:
21
23 auto init() -> bool override;
24
26 void set_timeout(long timeout_ms) override;
27
29 void register_fd(int fd, event_type et) override;
30
32 auto poll() -> std::optional<std::vector<event>> override;
33
34 private:
35 int m_kq{};
36 long m_timeout_ms{1000};
37 bool m_timeout_enabled{true};
38 std::vector<struct kevent> m_evs;
39 };
40}
41
42#endif
Event handler interface for tracking events on non-blocking file descriptors.
event_type
Type of event to register interest in.
Event handler implementation using BSD kqueue.
void register_fd(int fd, event_type et) override
Registers a file descriptor to track for events.
auto init() -> bool override
Initializes the event handler.
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.