11#ifndef DDT_DATAVISUALISATION_DDTDIALOGS_MONITORSAMPLES_HPP
12#define DDT_DATAVISUALISATION_DDTDIALOGS_MONITORSAMPLES_HPP
19#include <boost/accumulators/accumulators.hpp>
20#include <boost/accumulators/statistics/rolling_mean.hpp>
21#include <boost/accumulators/statistics/stats.hpp>
25#include "qpushbutton.h"
39 m_accumulator(boost::accumulators::tag::rolling_window::window_size = 10), m_last() {
46 m_accumulator = boost::accumulators::accumulator_set<double, boost::accumulators::stats<boost::accumulators::tag::rolling_mean>>(
47 boost::accumulators::tag::rolling_window::window_size = 10);
57 std::optional<float>
UpdateSamples(
unsigned int counter, std::chrono::system_clock::time_point ts) {
58 std::optional<float> res;
60 if (m_last.has_value()) {
61 if (m_last->first != counter) {
62 using Duration = std::chrono::duration<double>;
63 auto duration_sec = std::chrono::duration_cast<Duration>(ts - m_last->second);
64 auto samples_per_sec =
static_cast<double>(counter - m_last->first) / duration_sec.count();
66 m_accumulator(samples_per_sec);
67 m_last.emplace(counter, ts);
70 res = boost::accumulators::rolling_mean(m_accumulator);
72 m_last.emplace(counter, ts);
84 float ret = num_bytes.value_or(0.0);
87 while (ret > 1024.0) {
100 return {ret,
" Tib"};
102 return {ret,
" Pib"};
104 return {ret,
" Eib"};
113 boost::accumulators::accumulator_set<double, boost::accumulators::stats<boost::accumulators::tag::rolling_mean>> m_accumulator;
114 std::optional<std::pair<unsigned int, std::chrono::system_clock::time_point>> m_last;
144 const QVariant parameter)
override;
152 const QVariant parameter)
override;
169 QLineEdit* linedit_queue_capacity;
170 QLineEdit* linedit_originating_broker;
171 QLineEdit* linedit_frequency;
172 QLineEdit* linedit_throughput;
173 QLineEdit* linedit_latency;
174 QLineEdit* linedit_samples_count;
175 QLineEdit* linedit_number_subscribers;
176 QLineEdit* linedit_last_sample;
178 QPushButton* pushbutton_toggle_on;
179 QPushButton* pushbutton_toggle_off;
185 bool monitor_on_off_flag;
190 void ConnectWidgets();
DdtDialog(QWidget *parent=nullptr)
Definition ddtDialog.cpp:16
Definition ddtMonitorSamplesDialog.hpp:33
void Reset()
Definition ddtMonitorSamplesDialog.hpp:45
std::pair< float, char const * > ReadableByteSize(std::optional< float > num_bytes)
Definition ddtMonitorSamplesDialog.hpp:83
SamplesAccumulator()
Definition ddtMonitorSamplesDialog.hpp:38
std::optional< float > UpdateSamples(unsigned int counter, std::chrono::system_clock::time_point ts)
Definition ddtMonitorSamplesDialog.hpp:57
virtual ~ddtMonitorSamplesDialog()=default
void SetChangedParameter(const QString param_id, const QVariant parameter) override
Definition ddtMonitorSamplesDialog.cpp:165
QString GetDialogName() override
Definition ddtMonitorSamplesDialog.cpp:128
virtual void CreateDialog() override
Definition ddtMonitorSamplesDialog.cpp:38
void SetInitialParameter(const QString parameter_id, const QVariant parameter) override
Definition ddtMonitorSamplesDialog.cpp:132
ddtMonitorSamplesDialog(QWidget *parent=nullptr)
Definition ddtMonitorSamplesDialog.cpp:22
void closeEvent(QCloseEvent *event) override
Definition ddtMonitorSamplesDialog.cpp:28
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.