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::unique_ptr<interfaces::Report> 19 make(boost::asio::yield_context& yield, const std::string& name, 20 const std::string& reportingType, bool emitsReadingsSignal, 21 bool logToMetricReportsCollection, 22 std::chrono::milliseconds period, 23 const ReadingParameters& metricParams, 24 interfaces::ReportManager& reportManager, 25 interfaces::JsonStorage& reportStorage) const override; 26 std::unique_ptr<interfaces::Report> 27 make(const std::string& name, const std::string& reportingType, 28 bool emitsReadingsSignal, bool logToMetricReportsCollection, 29 std::chrono::milliseconds period, 30 const ReadingParameters& metricParams, 31 interfaces::ReportManager& reportManager, 32 interfaces::JsonStorage& reportStorage, 33 std::vector<LabeledMetricParameters> labeledMetricParams) 34 const override; 35 36 private: 37 std::shared_ptr<interfaces::Sensor> 38 getSensor(const LabeledSensorParameters& sensorPath) const; 39 std::vector<LabeledMetricParameters> 40 convertMetricParams(boost::asio::yield_context& yield, 41 const ReadingParameters& metricParams) const; 42 43 std::shared_ptr<sdbusplus::asio::connection> bus; 44 std::shared_ptr<sdbusplus::asio::object_server> objServer; 45 SensorCache& sensorCache; 46 }; 47