#pragma once #include "interfaces/report_factory.hpp" #include "interfaces/sensor.hpp" #include "sensor_cache.hpp" #include "types/sensor_types.hpp" #include #include class ReportFactory : public interfaces::ReportFactory { public: ReportFactory( std::shared_ptr bus, const std::shared_ptr& objServer, SensorCache& sensorCache); std::vector convertMetricParams( boost::asio::yield_context& yield, const ReadingParameters& metricParams) const override; std::unique_ptr make( const std::string& reportId, const std::string& name, const ReportingType reportingType, const std::vector& reportActions, Milliseconds period, uint64_t appendLimitIn, const ReportUpdates reportUpdatesIn, interfaces::ReportManager& reportManager, interfaces::JsonStorage& reportStorage, std::vector labeledMetricParams, bool enabled, const std::vector& triggerIds) const override; private: Sensors getSensors(const std::vector& sensorPaths) const; std::shared_ptr bus; std::shared_ptr objServer; SensorCache& sensorCache; };