metric.hpp (18e7101cf3283c32fa52ed8b00697e1e1f59015a) metric.hpp (cff70c14ef8cadb7fffd0cd41e06b972fa240e56)
1#pragma once
2
3#include "interfaces/clock.hpp"
4#include "interfaces/metric.hpp"
5#include "interfaces/metric_listener.hpp"
6#include "interfaces/sensor.hpp"
7#include "interfaces/sensor_listener.hpp"
8#include "metrics/collection_data.hpp"
9#include "types/collection_duration.hpp"
10
11class Metric :
12 public interfaces::Metric,
13 public interfaces::SensorListener,
14 public std::enable_shared_from_this<Metric>
15{
16 public:
1#pragma once
2
3#include "interfaces/clock.hpp"
4#include "interfaces/metric.hpp"
5#include "interfaces/metric_listener.hpp"
6#include "interfaces/sensor.hpp"
7#include "interfaces/sensor_listener.hpp"
8#include "metrics/collection_data.hpp"
9#include "types/collection_duration.hpp"
10
11class Metric :
12 public interfaces::Metric,
13 public interfaces::SensorListener,
14 public std::enable_shared_from_this<Metric>
15{
16 public:
17 Metric(Sensors sensors, OperationType operationType, std::string id,
18 CollectionTimeScope, CollectionDuration,
19 std::unique_ptr<interfaces::Clock>);
17 Metric(Sensors sensors, OperationType operationType, CollectionTimeScope,
18 CollectionDuration, std::unique_ptr<interfaces::Clock>);
20
21 void initialize() override;
22 void deinitialize() override;
23 const std::vector<MetricValue>& getUpdatedReadings() override;
24 void sensorUpdated(interfaces::Sensor&, Milliseconds,
25 double value) override;
26 LabeledMetricParameters dumpConfiguration() const override;
27 uint64_t metricCount() const override;
28 void registerForUpdates(interfaces::MetricListener& listener) override;
29 void unregisterFromUpdates(interfaces::MetricListener& listener) override;
30 void updateReadings(Milliseconds) override;
31 bool isTimerRequired() const override;
32
33 private:
34 metrics::CollectionData&
35 findAssociatedData(const interfaces::Sensor& notifier);
36
19
20 void initialize() override;
21 void deinitialize() override;
22 const std::vector<MetricValue>& getUpdatedReadings() override;
23 void sensorUpdated(interfaces::Sensor&, Milliseconds,
24 double value) override;
25 LabeledMetricParameters dumpConfiguration() const override;
26 uint64_t metricCount() const override;
27 void registerForUpdates(interfaces::MetricListener& listener) override;
28 void unregisterFromUpdates(interfaces::MetricListener& listener) override;
29 void updateReadings(Milliseconds) override;
30 bool isTimerRequired() const override;
31
32 private:
33 metrics::CollectionData&
34 findAssociatedData(const interfaces::Sensor& notifier);
35
37 std::string id;
38 std::vector<MetricValue> readings;
39 Sensors sensors;
40 OperationType operationType;
41 CollectionTimeScope collectionTimeScope;
42 CollectionDuration collectionDuration;
43 std::vector<std::unique_ptr<metrics::CollectionData>> collectionAlgorithms;
44 std::unique_ptr<interfaces::Clock> clock;
45 std::vector<std::reference_wrapper<interfaces::MetricListener>> listeners;
46};
36 std::vector<MetricValue> readings;
37 Sensors sensors;
38 OperationType operationType;
39 CollectionTimeScope collectionTimeScope;
40 CollectionDuration collectionDuration;
41 std::vector<std::unique_ptr<metrics::CollectionData>> collectionAlgorithms;
42 std::unique_ptr<interfaces::Clock> clock;
43 std::vector<std::reference_wrapper<interfaces::MetricListener>> listeners;
44};