1 #pragma once 2 3 #include "interfaces/json_storage.hpp" 4 #include "interfaces/report.hpp" 5 #include "interfaces/report_manager.hpp" 6 #include "interfaces/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::unique_ptr<interfaces::Report> make( 23 boost::asio::yield_context& yield, const std::string& name, 24 const std::string& reportingType, bool emitsReadingsSignal, 25 bool logToMetricReportsCollection, std::chrono::milliseconds period, 26 const ReadingParameters& metricParams, ReportManager& reportManager, 27 JsonStorage& reportStorage) const = 0; 28 virtual std::unique_ptr<interfaces::Report> make( 29 const std::string& name, const std::string& reportingType, 30 bool emitsReadingsSignal, bool logToMetricReportsCollection, 31 std::chrono::milliseconds period, const ReadingParameters& metricParams, 32 ReportManager& reportManager, JsonStorage& reportStorage, 33 std::vector<LabeledMetricParameters> labeledMetricParams) const = 0; 34 }; 35 36 } // namespace interfaces 37