From 2de7bab3cf1c7757078a113b35e927ecbccc5e3d Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Thu, 20 Jul 2023 09:23:17 +0200 Subject: Handle event socket bind failure --- doc/receive_events.py | 2 +- src/Events.cpp | 12 +++++++++++- src/Events.h | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/doc/receive_events.py b/doc/receive_events.py index dca27cd..bfd6f86 100755 --- a/doc/receive_events.py +++ b/doc/receive_events.py @@ -13,7 +13,7 @@ from pprint import pprint context = zmq.Context() sock = context.socket(zmq.SUB) -ep = "tcp://127.0.0.1:5557" +ep = "tcp://127.0.0.1:5556" print(f"Receive from {ep}") sock.connect(ep) diff --git a/src/Events.cpp b/src/Events.cpp index d65b73a..3171cda 100644 --- a/src/Events.cpp +++ b/src/Events.cpp @@ -47,11 +47,21 @@ EventSender::~EventSender() void EventSender::bind(const std::string& bind_endpoint) { - m_socket.bind(bind_endpoint); + try { + m_socket.bind(bind_endpoint); + m_socket_valid = true; + } + catch (const zmq::error_t& err) { + fprintf(stderr, "Cannot bind event socket: %s", err.what()); + } } void EventSender::send(const std::string& event_name, const json::map_t& detail) { + if (not m_socket_valid) { + return; + } + zmq::message_t zmsg1(event_name.data(), event_name.size()); const auto detail_json = json::map_to_json(detail); zmq::message_t zmsg2(detail_json.data(), detail_json.size()); diff --git a/src/Events.h b/src/Events.h index 215c5a8..9f838e5 100644 --- a/src/Events.h +++ b/src/Events.h @@ -61,6 +61,7 @@ class EventSender { private: zmq::context_t m_zmq_context; zmq::socket_t m_socket; + bool m_socket_valid = false; }; class LogToEventSender: public LogBackend { -- cgit v1.2.3