1 #pragma once 2 3 #include "interfaces/metric.hpp" 4 #include "interfaces/sensor.hpp" 5 #include "interfaces/sensor_listener.hpp" 6 7 class Metric : 8 public interfaces::Metric, 9 public interfaces::SensorListener, 10 public std::enable_shared_from_this<Metric> 11 { 12 public: 13 Metric(std::shared_ptr<interfaces::Sensor> sensor, 14 OperationType operationType, std::string id, std::string metadata); 15 16 void initialize() override; 17 const MetricValue& getReading() const override; 18 void sensorUpdated(interfaces::Sensor&, uint64_t) override; 19 void sensorUpdated(interfaces::Sensor&, uint64_t, double value) override; 20 LabeledMetricParameters dumpConfiguration() const override; 21 22 private: 23 MetricValue& findMetric(interfaces::Sensor&); 24 25 std::shared_ptr<interfaces::Sensor> sensor; 26 OperationType operationType; 27 MetricValue reading; 28 }; 29