1 #pragma once 2 3 #include "interfaces/json_storage.hpp" 4 #include "interfaces/metric.hpp" 5 #include "interfaces/report.hpp" 6 #include "interfaces/report_manager.hpp" 7 #include "types/report_action.hpp" 8 #include "types/report_types.hpp" 9 #include "types/report_updates.hpp" 10 #include "types/reporting_type.hpp" 11 12 #include <boost/asio/spawn.hpp> 13 14 #include <chrono> 15 #include <memory> 16 #include <optional> 17 18 namespace interfaces 19 { 20 21 class ReportFactory 22 { 23 public: 24 virtual ~ReportFactory() = default; 25 26 virtual std::vector<LabeledMetricParameters> 27 convertMetricParams(boost::asio::yield_context& yield, 28 const ReadingParameters& metricParams) const = 0; 29 virtual std::vector<LabeledMetricParameters> 30 convertMetricParams(const ReadingParameters& metricParams) const = 0; 31 32 virtual void 33 updateMetrics(std::vector<std::shared_ptr<interfaces::Metric>>& metrics, 34 bool enabled, 35 const ReadingParameters& metricParams) const = 0; 36 37 virtual std::unique_ptr<interfaces::Report> 38 make(const std::string& id, const std::string& name, 39 const ReportingType reportingType, 40 const std::vector<ReportAction>& reportActions, 41 Milliseconds period, uint64_t appendLimit, 42 const ReportUpdates reportUpdates, ReportManager& reportManager, 43 JsonStorage& reportStorage, 44 std::vector<LabeledMetricParameters> labeledMetricParams, 45 bool enabled) const = 0; 46 }; 47 48 } // namespace interfaces 49