xref: /openbmc/telemetry/src/interfaces/report_factory.hpp (revision b4ef22e4d365bde35a7fce7950033c9271c68ce7)
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_action.hpp"
7 #include "types/report_types.hpp"
8 #include "types/report_updates.hpp"
9 #include "types/reporting_type.hpp"
10 
11 #include <boost/asio/spawn.hpp>
12 
13 #include <chrono>
14 #include <memory>
15 #include <optional>
16 
17 namespace interfaces
18 {
19 
20 class ReportFactory
21 {
22   public:
23     virtual ~ReportFactory() = default;
24 
25     virtual std::vector<LabeledMetricParameters>
26         convertMetricParams(boost::asio::yield_context& yield,
27                             const ReadingParameters& metricParams) const = 0;
28 
29     virtual std::unique_ptr<interfaces::Report> make(
30         const std::string& id, const std::string& name,
31         const ReportingType reportingType,
32         const std::vector<ReportAction>& reportActions, Milliseconds period,
33         uint64_t appendLimit, const ReportUpdates reportUpdates,
34         ReportManager& reportManager, JsonStorage& reportStorage,
35         std::vector<LabeledMetricParameters> labeledMetricParams, bool enabled,
36         const std::vector<std::string>& triggerIds) const = 0;
37 };
38 
39 } // namespace interfaces
40