blob: 6e27446f9fab9a92e7ea993207500741eec9b2a5 [file] [log] [blame]
#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;
};