xref: /openbmc/telemetry/src/interfaces/metric.hpp (revision 3eb56865)
1c8e3a64aSKrzysztof Grobelny #pragma once
2c8e3a64aSKrzysztof Grobelny 
3c8e3a64aSKrzysztof Grobelny #include "metric_value.hpp"
4dcc4e193SKrzysztof Grobelny #include "types/report_types.hpp"
5c8e3a64aSKrzysztof Grobelny 
6e2362796SWludzik, Jozef #include <nlohmann/json.hpp>
7e2362796SWludzik, Jozef 
8c8e3a64aSKrzysztof Grobelny #include <vector>
9c8e3a64aSKrzysztof Grobelny 
10c8e3a64aSKrzysztof Grobelny namespace interfaces
11c8e3a64aSKrzysztof Grobelny {
12c8e3a64aSKrzysztof Grobelny 
13c8e3a64aSKrzysztof Grobelny class Metric
14c8e3a64aSKrzysztof Grobelny {
15c8e3a64aSKrzysztof Grobelny   public:
16c8e3a64aSKrzysztof Grobelny     virtual ~Metric() = default;
17c8e3a64aSKrzysztof Grobelny 
186ccfcbf5SKrzysztof Grobelny     virtual void initialize() = 0;
197e098e93SLukasz Kazmierczak     virtual void deinitialize() = 0;
208069771cSKrzysztof Grobelny     virtual std::vector<MetricValue> getReadings() const = 0;
21d2238194SKrzysztof Grobelny     virtual LabeledMetricParameters dumpConfiguration() const = 0;
22*3eb56865SSzymon Dompke     virtual uint64_t sensorCount() const = 0;
23c8e3a64aSKrzysztof Grobelny };
24c8e3a64aSKrzysztof Grobelny 
25c8e3a64aSKrzysztof Grobelny } // namespace interfaces
26