| #pragma once |
| |
| #include "interfaces/metric.hpp" |
| #include "interfaces/sensor.hpp" |
| #include "interfaces/sensor_listener.hpp" |
| |
| class Metric : |
| public interfaces::Metric, |
| public interfaces::SensorListener, |
| public std::enable_shared_from_this<Metric> |
| { |
| public: |
| Metric(std::vector<std::shared_ptr<interfaces::Sensor>> sensors, |
| std::string operationType, std::string id, std::string metadata); |
| |
| void initialize() override; |
| const std::vector<MetricValue>& getReadings() const override; |
| void sensorUpdated(interfaces::Sensor&, uint64_t) override; |
| void sensorUpdated(interfaces::Sensor&, uint64_t, double value) override; |
| nlohmann::json to_json() const override; |
| |
| private: |
| MetricValue& findMetric(interfaces::Sensor&); |
| |
| std::vector<std::shared_ptr<interfaces::Sensor>> sensors; |
| std::string operationType; |
| std::string id; |
| std::string metadata; |
| std::vector<MetricValue> readings; |
| }; |