1 #pragma once 2 3 #include "interfaces/report_factory.hpp" 4 #include "interfaces/sensor.hpp" 5 #include "sensor_cache.hpp" 6 7 #include <boost/asio/io_context.hpp> 8 #include <sdbusplus/asio/object_server.hpp> 9 10 class ReportFactory : public interfaces::ReportFactory 11 { 12 public: 13 ReportFactory( 14 std::shared_ptr<sdbusplus::asio::connection> bus, 15 const std::shared_ptr<sdbusplus::asio::object_server>& objServer, 16 SensorCache& sensorCache); 17 18 std::vector<LabeledMetricParameters> convertMetricParams( 19 boost::asio::yield_context& yield, 20 const ReadingParameters& metricParams) const override; 21 22 std::unique_ptr<interfaces::Report> 23 make(const std::string& reportId, const std::string& name, 24 const ReportingType reportingType, 25 const std::vector<ReportAction>& reportActions, 26 Milliseconds period, uint64_t appendLimitIn, 27 const ReportUpdates reportUpdatesIn, 28 interfaces::ReportManager& reportManager, 29 interfaces::JsonStorage& reportStorage, 30 std::vector<LabeledMetricParameters> labeledMetricParams, 31 bool enabled) const override; 32 33 private: 34 Sensors getSensors( 35 const std::vector<LabeledSensorParameters>& sensorPaths) const; 36 37 std::shared_ptr<sdbusplus::asio::connection> bus; 38 std::shared_ptr<sdbusplus::asio::object_server> objServer; 39 SensorCache& sensorCache; 40 }; 41