inform all listeners about stop in metrics hub

This commit is contained in:
Andre Puschmann 2018-01-26 13:20:18 +01:00
parent 253e7502e8
commit bf45ba32bf
4 changed files with 17 additions and 5 deletions

View File

@ -25,6 +25,7 @@ class metrics_listener
{ {
public: public:
virtual void set_metrics(metrics_t &m) = 0; virtual void set_metrics(metrics_t &m) = 0;
virtual void stop() = 0;
}; };
template<typename metrics_t> template<typename metrics_t>
@ -43,6 +44,10 @@ public:
return true; return true;
} }
void stop() { void stop() {
// stop all listeners
for (uint32_t i=0;i<listeners.size();i++) {
listeners[i]->stop();
}
thread_cancel(); thread_cancel();
wait_thread_finish(); wait_thread_finish();
} }

View File

@ -52,6 +52,7 @@ public:
void set_periodicity(float metrics_report_period_sec); void set_periodicity(float metrics_report_period_sec);
void set_metrics(ue_metrics_t &m); void set_metrics(ue_metrics_t &m);
void set_ue_handle(ue_metrics_interface *ue_); void set_ue_handle(ue_metrics_interface *ue_);
void stop();
private: private:
std::string float_to_string(float f, int digits, bool add_semicolon = true); std::string float_to_string(float f, int digits, bool add_semicolon = true);

View File

@ -50,6 +50,7 @@ public:
void toggle_print(bool b); void toggle_print(bool b);
void set_metrics(ue_metrics_t &m); void set_metrics(ue_metrics_t &m);
void set_ue_handle(ue_metrics_interface *ue_); void set_ue_handle(ue_metrics_interface *ue_);
void stop() {};
private: private:
std::string float_to_string(float f, int digits); std::string float_to_string(float f, int digits);

View File

@ -51,11 +51,7 @@ metrics_csv::metrics_csv(std::string filename)
metrics_csv::~metrics_csv() metrics_csv::~metrics_csv()
{ {
if (file.is_open()) { stop();
file << "#eof\n";
file.flush();
file.close();
}
} }
void metrics_csv::set_ue_handle(ue_metrics_interface *ue_) 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_; 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) { void metrics_csv::set_periodicity(float metrics_report_period_sec) {
this->metrics_report_period = metrics_report_period_sec; this->metrics_report_period = metrics_report_period_sec;
} }