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> make( 27 const std::string& name, const std::string& reportingType, 28 bool emitsReadingsSignal, bool logToMetricReportsCollection, 29 Milliseconds period, ReportManager& reportManager, 30 JsonStorage& reportStorage, 31 std::vector<LabeledMetricParameters> labeledMetricParams) const = 0; 32 }; 33 34 } // namespace interfaces 35