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