From 5e2c67ce864c983f2399da366ee7ebf213887ad5 Mon Sep 17 00:00:00 2001 From: Florian Gramss Date: Wed, 2 Dec 2020 02:23:56 +0100 Subject: [PATCH 1/2] Skip 100ms (max) wait for detached thread --- src/loggers/bt_zmq_publisher.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/loggers/bt_zmq_publisher.cpp b/src/loggers/bt_zmq_publisher.cpp index 6b9baf122..8e59e8690 100644 --- a/src/loggers/bt_zmq_publisher.cpp +++ b/src/loggers/bt_zmq_publisher.cpp @@ -75,6 +75,9 @@ PublisherZMQ::PublisherZMQ(const BT::Tree& tree, } catch (zmq::error_t& err) { + if (err.num() == ETERM) + std::cout << "[PublisherZMQ] Server quitting." << std::endl; + std::cout << "[PublisherZMQ] just died. Exeption " << err.what() << std::endl; active_server_ = false; } @@ -87,6 +90,9 @@ PublisherZMQ::PublisherZMQ(const BT::Tree& tree, PublisherZMQ::~PublisherZMQ() { active_server_ = false; + + zmq_->context.shutdown(); + if (thread_.joinable()) { thread_.join(); @@ -161,8 +167,19 @@ void PublisherZMQ::flush() transition_buffer_.clear(); createStatusBuffer(); } + try + { + zmq_->publisher.send(message, 0); + } + catch (zmq::error_t& err) + { + if (err.num() == ETERM) + std::cout << "[PublisherZMQ] Publisher quitting." << std::endl; - zmq_->publisher.send(message, 0); + std::cout << "[PublisherZMQ] just died. Exeption " << err.what() << std::endl; + } + + send_pending_ = false; // printf("%.3f zmq send\n", std::chrono::duration( std::chrono::high_resolution_clock::now().time_since_epoch() ).count()); } From f842c3d8b14c64aaa74b9430968ea3a1d252af16 Mon Sep 17 00:00:00 2001 From: Florian Gramss Date: Wed, 2 Dec 2020 04:07:41 +0100 Subject: [PATCH 2/2] add {} to single line if statements --- src/loggers/bt_zmq_publisher.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/loggers/bt_zmq_publisher.cpp b/src/loggers/bt_zmq_publisher.cpp index 8e59e8690..9b7ecc323 100644 --- a/src/loggers/bt_zmq_publisher.cpp +++ b/src/loggers/bt_zmq_publisher.cpp @@ -76,8 +76,9 @@ PublisherZMQ::PublisherZMQ(const BT::Tree& tree, catch (zmq::error_t& err) { if (err.num() == ETERM) + { std::cout << "[PublisherZMQ] Server quitting." << std::endl; - + } std::cout << "[PublisherZMQ] just died. Exeption " << err.what() << std::endl; active_server_ = false; } @@ -90,9 +91,7 @@ PublisherZMQ::PublisherZMQ(const BT::Tree& tree, PublisherZMQ::~PublisherZMQ() { active_server_ = false; - zmq_->context.shutdown(); - if (thread_.joinable()) { thread_.join(); @@ -174,8 +173,9 @@ void PublisherZMQ::flush() catch (zmq::error_t& err) { if (err.num() == ETERM) + { std::cout << "[PublisherZMQ] Publisher quitting." << std::endl; - + } std::cout << "[PublisherZMQ] just died. Exeption " << err.what() << std::endl; }