From a6a681ab9cafcfd0574e7a9a53cb55fbdcadcef3 Mon Sep 17 00:00:00 2001 From: marcus Date: Tue, 29 Jul 2025 17:11:24 +0000 Subject: [PATCH 1/2] add subject to monitoring messages, split logging and monitoring across different ports --- src/ServiceDiscovery/Services.cpp | 11 ++--- src/ServiceDiscovery/Services.h | 2 +- src/ServiceDiscovery/ServicesBackend.cpp | 52 +++++++++++++++--------- src/ServiceDiscovery/ServicesBackend.h | 10 +++-- 4 files changed, 46 insertions(+), 29 deletions(-) diff --git a/src/ServiceDiscovery/Services.cpp b/src/ServiceDiscovery/Services.cpp index 47a96f9..ca123e5 100644 --- a/src/ServiceDiscovery/Services.cpp +++ b/src/ServiceDiscovery/Services.cpp @@ -73,7 +73,7 @@ bool Services::SendAlarm(const std::string& message, unsigned int level, const s + ",\"severity\":0" + ",\"message\":\"" + message + "\"}"; - ok = ok && m_backend_client.SendMulticast(cmd_string, &err); + ok = ok && m_backend_client.SendMulticast(0,cmd_string, &err); if(!ok){ std::clog<<"SendAlarm (log) error: "<655355){ @@ -572,7 +573,7 @@ bool Services::SendMonitoringData(const std::string& json_data, const std::strin std::string err=""; - if(!m_backend_client.SendMulticast(cmd_string, &err)){ + if(!m_backend_client.SendMulticast(1,cmd_string, &err)){ std::clog<<"SendMonitoringData error: "< signaller){ return true; } -bool ServicesBackend::SendMulticast(std::string command, std::string* err){ +bool ServicesBackend::SendMulticast(int type, std::string command, std::string* err){ // multicast send. These do not wait for a response, so no timeout. // only immediately evident errors are reported. receipt is not confirmed. if(verbosity>10) std::cout<<"ServicesBackend::SendMulticast invoked with command '"<RemoveService("slowcontrol_read"); Log("ServicesBackend Closing multicast socket",v_debug,verbosity); - close(multicast_socket); + close(log_socket); + close(mon_socket); Log("ServicesBackend Deleting Utilities class",v_debug,verbosity); if(utilities){ diff --git a/src/ServiceDiscovery/ServicesBackend.h b/src/ServiceDiscovery/ServicesBackend.h index a776dc9..1ff6b79 100644 --- a/src/ServiceDiscovery/ServicesBackend.h +++ b/src/ServiceDiscovery/ServicesBackend.h @@ -60,7 +60,7 @@ class ServicesBackend { bool SendCommand(const std::string& topic, const std::string& command, std::string* results=nullptr, const unsigned int* timeout_ms=nullptr, std::string* err=nullptr); // multicasts - bool SendMulticast(std::string command, std::string* err=nullptr); + bool SendMulticast(int type, std::string command, std::string* err=nullptr); private: @@ -85,10 +85,12 @@ class ServicesBackend { std::vector in_polls; std::vector out_polls; - // multicast socket file descriptor - int multicast_socket=-1; + // multicast socket file descriptors + int log_socket=-1; + int mon_socket=-1; // multicast destination address structure - struct sockaddr_in multicast_addr; + struct sockaddr_in log_addr; + struct sockaddr_in mon_addr; socklen_t multicast_addrlen; // apparently works with zmq poller? zmq::pollitem_t multicast_poller; From 7003995f43c340e34858c771b22fcc42356a7d61 Mon Sep 17 00:00:00 2001 From: marcus Date: Tue, 5 Aug 2025 12:19:18 +0000 Subject: [PATCH 2/2] swap order of subject and message in SendMonitoring, make multicast type an enum --- src/ServiceDiscovery/Services.cpp | 10 +++++----- src/ServiceDiscovery/Services.h | 2 +- src/ServiceDiscovery/ServicesBackend.cpp | 9 ++++----- src/ServiceDiscovery/ServicesBackend.h | 4 +++- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/ServiceDiscovery/Services.cpp b/src/ServiceDiscovery/Services.cpp index ca123e5..78ae7f4 100644 --- a/src/ServiceDiscovery/Services.cpp +++ b/src/ServiceDiscovery/Services.cpp @@ -73,7 +73,7 @@ bool Services::SendAlarm(const std::string& message, unsigned int level, const s + ",\"severity\":0" + ",\"message\":\"" + message + "\"}"; - ok = ok && m_backend_client.SendMulticast(0,cmd_string, &err); + ok = ok && m_backend_client.SendMulticast(MulticastType::Log,cmd_string, &err); if(!ok){ std::clog<<"SendAlarm (log) error: "< signaller){ return true; } -bool ServicesBackend::SendMulticast(int type, std::string command, std::string* err){ +bool ServicesBackend::SendMulticast(MulticastType type, std::string command, std::string* err){ // multicast send. These do not wait for a response, so no timeout. // only immediately evident errors are reported. receipt is not confirmed. if(verbosity>10) std::cout<<"ServicesBackend::SendMulticast invoked with command '"<