3#include <spdlog/spdlog.h>
19 case spdlog::level::debug:
20 spdlog::debug(
"{} {}", messageStr, addr ==
nullptr ?
"" : addr);
22 case spdlog::level::info:
23 spdlog::info(
"{} {}", messageStr, addr ==
nullptr ?
"" : addr);
25 case spdlog::level::warn:
26 spdlog::warn(
"{} {}", messageStr, addr ==
nullptr ?
"" : addr);
38 on_event(
"Connected", spdlog::level::info, addr_);
43 on_event(
"Connect delayed", spdlog::level::debug, addr_);
48 on_event(
"Connect retried", spdlog::level::debug, addr_);
53 on_event(
"Listening", spdlog::level::debug, addr_);
58 on_event(
"Bind failed", spdlog::level::warn, addr_);
63 on_event(
"Accepted", spdlog::level::info, addr_);
68 on_event(
"Accept failed", spdlog::level::warn, addr_);
73 on_event(
"Closed", spdlog::level::debug, addr_);
78 on_event(
"Close failed", spdlog::level::warn, addr_);
84 on_event(
"Disconnected", spdlog::level::info, addr_);
87#if ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 3, 0) || \
88 (defined(ZMQ_BUILD_DRAFT_API) && ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 3))
91 on_event(
"Handshake failed (no detail)", spdlog::level::warn, addr_);
96 on_event(
"Handshake failed (protocol)", spdlog::level::warn, addr_);
101 on_event(
"Handshake failed (auth)", spdlog::level::warn, addr_);
106 on_event(
"Handshake succeeded", spdlog::level::info, addr_);
109#elif defined(ZMQ_BUILD_DRAFT_API) && ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 1)
110void ZeroMQMonitor::on_event_handshake_failed(
const zmq_event_t & ,
const char *addr_)
112 on_event(
"Handshake failed", spdlog::level::warn, addr_);
115void ZeroMQMonitor::on_event_handshake_succeed(
const zmq_event_t & ,
const char *addr_)
117 on_event(
"Handshake succeed", spdlog::level::info, addr_);
123 on_event(
"Unknown event", spdlog::level::warn, addr_);
128 if (socket ==
nullptr)
130 throw std::invalid_argument(
"ZeroMQ socket to monitor is nullptr");
133 init(*socket, monitorAddress);
139 const std::vector<std::function<void()>> testFunctions = {
150#if ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 3, 0) || \
151 (defined(ZMQ_BUILD_DRAFT_API) && ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 3))
156#elif defined(ZMQ_BUILD_DRAFT_API) && ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 1)
157 [
this]() { on_event_handshake_failed(zmq_event_t{},
"test_address"); },
158 [
this]() { on_event_handshake_succeed(zmq_event_t{},
"test_address"); },
162 for (
const auto &testFunc : testFunctions)
171#ifdef ZMQ_EVENT_MONITOR_STOPPED
182 spdlog::info(
"Monitor stopped");
constexpr int EVENT_CHECK_TIMEOUT_MS
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
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
void on_event_handshake_failed_auth(const zmq_event_t &, const char *addr_) override
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
std::atomic_flag _shouldStop
void on_event_close_failed(const zmq_event_t &, const char *addr_) override