xref: /openbmc/telemetry/src/interfaces/metric.hpp (revision 3eb56865714cd591b24d2bdef83307508aa072c5)
1 #pragma once
2 
3 #include "metric_value.hpp"
4 #include "types/report_types.hpp"
5 
6 #include <nlohmann/json.hpp>
7 
8 #include <vector>
9 
10 namespace interfaces
11 {
12 
13 class Metric
14 {
15   public:
16     virtual ~Metric() = default;
17 
18     virtual void initialize() = 0;
19     virtual void deinitialize() = 0;
20     virtual std::vector<MetricValue> getReadings() const = 0;
21     virtual LabeledMetricParameters dumpConfiguration() const = 0;
22     virtual uint64_t sensorCount() const = 0;
23 };
24 
25 } // namespace interfaces
26