20#ifndef DDT_DATAVISUALISATION_DDTDIALOGS_MONITORSAMPLES_HPP
21#define DDT_DATAVISUALISATION_DDTDIALOGS_MONITORSAMPLES_HPP
28#include <boost/accumulators/accumulators.hpp>
29#include <boost/accumulators/statistics/rolling_mean.hpp>
30#include <boost/accumulators/statistics/stats.hpp>
34#include "qpushbutton.h"
48 m_accumulator(boost::accumulators::tag::rolling_window::window_size = 10), m_last() {
55 m_accumulator = boost::accumulators::accumulator_set<double, boost::accumulators::stats<boost::accumulators::tag::rolling_mean>>(
56 boost::accumulators::tag::rolling_window::window_size = 10);
66 std::optional<float>
UpdateSamples(
unsigned int counter, std::chrono::system_clock::time_point ts) {
67 std::optional<float> res;
69 if (m_last.has_value()) {
70 if (m_last->first != counter) {
71 using Duration = std::chrono::duration<double>;
72 auto duration_sec = std::chrono::duration_cast<Duration>(ts - m_last->second);
73 auto samples_per_sec =
static_cast<double>(counter - m_last->first) / duration_sec.count();
75 m_accumulator(samples_per_sec);
76 m_last.emplace(counter, ts);
79 res = boost::accumulators::rolling_mean(m_accumulator);
81 m_last.emplace(counter, ts);
93 float ret = num_bytes.value_or(0.0);
96 while (ret > 1024.0) {
103 return {ret,
" kib"};
105 return {ret,
" Mib"};
107 return {ret,
" Gib"};
109 return {ret,
" Tib"};
111 return {ret,
" Pib"};
113 return {ret,
" Eib"};
122 boost::accumulators::accumulator_set<double, boost::accumulators::stats<boost::accumulators::tag::rolling_mean>> m_accumulator;
123 std::optional<std::pair<unsigned int, std::chrono::system_clock::time_point>> m_last;
153 const QVariant parameter)
override;
161 const QVariant parameter)
override;
178 QLineEdit* linedit_queue_capacity;
179 QLineEdit* linedit_originating_broker;
180 QLineEdit* linedit_frequency;
181 QLineEdit* linedit_throughput;
182 QLineEdit* linedit_latency;
183 QLineEdit* linedit_samples_count;
184 QLineEdit* linedit_number_subscribers;
185 QLineEdit* linedit_last_sample;
187 QPushButton* pushbutton_toggle_on;
188 QPushButton* pushbutton_toggle_off;
194 bool monitor_on_off_flag;
199 void ConnectWidgets();
Definition ddtDialog.hpp:27
Definition ddtMonitorSamplesDialog.hpp:42
void Reset()
Definition ddtMonitorSamplesDialog.hpp:54
std::pair< float, char const * > ReadableByteSize(std::optional< float > num_bytes)
Definition ddtMonitorSamplesDialog.hpp:92
SamplesAccumulator()
Definition ddtMonitorSamplesDialog.hpp:47
std::optional< float > UpdateSamples(unsigned int counter, std::chrono::system_clock::time_point ts)
Definition ddtMonitorSamplesDialog.hpp:66
Definition ddtMonitorSamplesDialog.hpp:131
virtual ~ddtMonitorSamplesDialog()=default
void SetChangedParameter(const QString param_id, const QVariant parameter) override
Definition ddtMonitorSamplesDialog.cpp:174
QString GetDialogName() override
Definition ddtMonitorSamplesDialog.cpp:137
virtual void CreateDialog() override
Definition ddtMonitorSamplesDialog.cpp:47
void SetInitialParameter(const QString parameter_id, const QVariant parameter) override
Definition ddtMonitorSamplesDialog.cpp:141
ddtMonitorSamplesDialog(QWidget *parent=nullptr)
Definition ddtMonitorSamplesDialog.cpp:31
void closeEvent(QCloseEvent *event) override
Definition ddtMonitorSamplesDialog.cpp:37
DDT Dialog IDs. ID values for all used dialogs. IDs for the used dialogs.
DDT Dialogs. Base class for the DDT dialogs. Base class for the DDT dialogs.