xref: /openbmc/telemetry/src/interfaces/report_factory.hpp (revision 3eb56865714cd591b24d2bdef83307508aa072c5)
1 #pragma once
2 
3 #include "interfaces/json_storage.hpp"
4 #include "interfaces/report.hpp"
5 #include "interfaces/report_manager.hpp"
6 #include "types/report_types.hpp"
7 
8 #include <boost/asio/spawn.hpp>
9 
10 #include <chrono>
11 #include <memory>
12 #include <optional>
13 
14 namespace interfaces
15 {
16 
17 class ReportFactory
18 {
19   public:
20     virtual ~ReportFactory() = default;
21 
22     virtual std::vector<LabeledMetricParameters>
23         convertMetricParams(boost::asio::yield_context& yield,
24                             const ReadingParameters& metricParams) const = 0;
25 
26     virtual std::unique_ptr<interfaces::Report>
27         make(const std::string& name, const std::string& reportingType,
28              bool emitsReadingsSignal, bool logToMetricReportsCollection,
29              Milliseconds period, uint64_t appendLimit,
30              const std::string& reportUpdates, ReportManager& reportManager,
31              JsonStorage& reportStorage,
32              std::vector<LabeledMetricParameters> labeledMetricParams,
33              bool enabled) const = 0;
34 };
35 
36 } // namespace interfaces
37