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