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 std::optional<std::reference_wrapper<boost::asio::yield_context>> yield, 24 const std::string& name, const std::string& reportingType, 25 bool emitsReadingsSignal, bool logToMetricReportsCollection, 26 std::chrono::milliseconds period, const ReadingParameters& metricParams, 27 ReportManager& reportManager, JsonStorage& reportStorage) const = 0; 28 }; 29 30 } // namespace interfaces 31