diff --git a/lib/include/srslte/common/metrics_hub.h b/lib/include/srslte/common/metrics_hub.h index ac0b6a8a7..961e77cc8 100644 --- a/lib/include/srslte/common/metrics_hub.h +++ b/lib/include/srslte/common/metrics_hub.h @@ -25,6 +25,7 @@ class metrics_listener { public: virtual void set_metrics(metrics_t &m) = 0; + virtual void stop() = 0; }; template @@ -43,6 +44,10 @@ public: return true; } void stop() { + // stop all listeners + for (uint32_t i=0;istop(); + } thread_cancel(); wait_thread_finish(); } diff --git a/srsue/hdr/metrics_csv.h b/srsue/hdr/metrics_csv.h index 76f729bbf..39b17bf2d 100644 --- a/srsue/hdr/metrics_csv.h +++ b/srsue/hdr/metrics_csv.h @@ -52,6 +52,7 @@ public: void set_periodicity(float metrics_report_period_sec); void set_metrics(ue_metrics_t &m); void set_ue_handle(ue_metrics_interface *ue_); + void stop(); private: std::string float_to_string(float f, int digits, bool add_semicolon = true); diff --git a/srsue/hdr/metrics_stdout.h b/srsue/hdr/metrics_stdout.h index 87a67cb2e..c4cc91441 100644 --- a/srsue/hdr/metrics_stdout.h +++ b/srsue/hdr/metrics_stdout.h @@ -50,6 +50,7 @@ public: void toggle_print(bool b); void set_metrics(ue_metrics_t &m); void set_ue_handle(ue_metrics_interface *ue_); + void stop() {}; private: std::string float_to_string(float f, int digits); diff --git a/srsue/src/metrics_csv.cc b/srsue/src/metrics_csv.cc index 9b4d5e8c6..aaad3f38a 100644 --- a/srsue/src/metrics_csv.cc +++ b/srsue/src/metrics_csv.cc @@ -51,11 +51,7 @@ metrics_csv::metrics_csv(std::string filename) metrics_csv::~metrics_csv() { - if (file.is_open()) { - file << "#eof\n"; - file.flush(); - file.close(); - } + stop(); } void metrics_csv::set_ue_handle(ue_metrics_interface *ue_) @@ -63,6 +59,15 @@ void metrics_csv::set_ue_handle(ue_metrics_interface *ue_) ue = ue_; } +void metrics_csv::stop() +{ + if (file.is_open()) { + file << "#eof\n"; + file.flush(); + file.close(); + } +} + void metrics_csv::set_periodicity(float metrics_report_period_sec) { this->metrics_report_period = metrics_report_period_sec; }