Repo-Init
 
Loading...
Searching...
No Matches
ZeroMQMonitor.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <zmq.hpp>
4
5#include <atomic>
6#include <string>
7#include <thread>
8
17class ZeroMQMonitor : private zmq::monitor_t {
18 private:
19 std::unique_ptr<std::thread> _monitorThread;
20 std::atomic_flag _shouldStop{false};
21 std::atomic_int _peerCount{0};
23 void threadFunc();
24
25 static void on_event(const std::string &messageStr, int level, const char *addr = nullptr);
26
27 void on_monitor_started() override;
28
29 void on_event_connected(const zmq_event_t & /*unused*/, const char *addr_) override;
30
31 void on_event_connect_delayed(const zmq_event_t & /*unused*/, const char *addr_) override;
32
33 void on_event_connect_retried(const zmq_event_t & /*unused*/, const char *addr_) override;
34
35 void on_event_listening(const zmq_event_t & /*unused*/, const char *addr_) override;
36
37 void on_event_bind_failed(const zmq_event_t & /*unused*/, const char *addr_) override;
38
39 void on_event_accepted(const zmq_event_t & /*unused*/, const char *addr_) override;
40
41 void on_event_accept_failed(const zmq_event_t & /*unused*/, const char *addr_) override;
42
43 void on_event_closed(const zmq_event_t & /*unused*/, const char *addr_) override;
44
45 void on_event_close_failed(const zmq_event_t & /*unused*/, const char *addr_) override;
46
47 void on_event_disconnected(const zmq_event_t & /*unused*/, const char *addr_) override;
48
49#if ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 3, 0) || \
50 (defined(ZMQ_BUILD_DRAFT_API) && ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 3))
51 void on_event_handshake_failed_no_detail(const zmq_event_t & /*unused*/, const char *addr_) override;
52
53 void on_event_handshake_failed_protocol(const zmq_event_t & /*unused*/, const char *addr_) override;
54
55 void on_event_handshake_failed_auth(const zmq_event_t & /*unused*/, const char *addr_) override;
56
57 void on_event_handshake_succeeded(const zmq_event_t & /*unused*/, const char *addr_) override;
58
59#elif defined(ZMQ_BUILD_DRAFT_API) && ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 1)
60 void on_event_handshake_failed(const zmq_event_t & /*unused*/, const char *addr_) override;
61
62 void on_event_handshake_succeed(const zmq_event_t & /*unused*/, const char *addr_) override;
63#endif
64
65 void on_event_unknown(const zmq_event_t & /*unused*/, const char *addr_) override;
66
67 public:
69 ZeroMQMonitor() = default;
70
72 ZeroMQMonitor(const ZeroMQMonitor & /*unused*/) = delete;
73
75 ZeroMQMonitor(ZeroMQMonitor && /*unused*/) = delete;
76
78 ZeroMQMonitor &operator=(ZeroMQMonitor /*unused*/) = delete;
79
81 ZeroMQMonitor &operator=(ZeroMQMonitor && /*unused*/) = delete;
82
92 void startMonitoring(zmq::socket_t *socket, const std::string &monitorAddress);
93
98 [[nodiscard]] int getPeerCount() const { return _peerCount; }
99
103 void stopMonitoring();
104
109};
void on_event_unknown(const zmq_event_t &, const char *addr_) override
void on_event_connect_retried(const zmq_event_t &, const char *addr_) override
ZeroMQMonitor()=default
Constructor.
ZeroMQMonitor & operator=(ZeroMQMonitor &&)=delete
Move assignment operator.
void on_event_disconnected(const zmq_event_t &, const char *addr_) override
void on_event_bind_failed(const zmq_event_t &, const char *addr_) override
void on_event_connect_delayed(const zmq_event_t &, const char *addr_) override
void on_event_listening(const zmq_event_t &, const char *addr_) override
void on_event_closed(const zmq_event_t &, const char *addr_) override
void startMonitoring(zmq::socket_t *socket, const std::string &monitorAddress)
void on_event_connected(const zmq_event_t &, const char *addr_) override
void on_event_handshake_succeeded(const zmq_event_t &, const char *addr_) override
void on_event_accepted(const zmq_event_t &, const char *addr_) override
std::unique_ptr< std::thread > _monitorThread
std::atomic_int _peerCount
int getPeerCount() const
void on_event_handshake_failed_auth(const zmq_event_t &, const char *addr_) override
ZeroMQMonitor(const ZeroMQMonitor &)=delete
Copy constructor.
void on_event_accept_failed(const zmq_event_t &, const char *addr_) override
static void on_event(const std::string &messageStr, int level, const char *addr=nullptr)
void on_monitor_started() override
void on_event_handshake_failed_no_detail(const zmq_event_t &, const char *addr_) override
void on_event_handshake_failed_protocol(const zmq_event_t &, const char *addr_) override
~ZeroMQMonitor() override
std::atomic_flag _shouldStop
ZeroMQMonitor & operator=(ZeroMQMonitor)=delete
Copy assignment operator.
void on_event_close_failed(const zmq_event_t &, const char *addr_) override
ZeroMQMonitor(ZeroMQMonitor &&)=delete
Move constructor.