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