12f9f9b87SWludzik, Jozef #pragma once 22f9f9b87SWludzik, Jozef 32f9f9b87SWludzik, Jozef #include "interfaces/report_factory.hpp" 4e2362796SWludzik, Jozef #include "interfaces/sensor.hpp" 56ccfcbf5SKrzysztof Grobelny #include "sensor_cache.hpp" 694f71c51SSzymon Dompke #include "types/sensor_types.hpp" 7fdb06a14SSzymon Dompke #include "utils/dbus_mapper.hpp" 82f9f9b87SWludzik, Jozef 92f9f9b87SWludzik, Jozef #include <boost/asio/io_context.hpp> 102f9f9b87SWludzik, Jozef #include <sdbusplus/asio/object_server.hpp> 112f9f9b87SWludzik, Jozef 122f9f9b87SWludzik, Jozef class ReportFactory : public interfaces::ReportFactory 132f9f9b87SWludzik, Jozef { 142f9f9b87SWludzik, Jozef public: 152f9f9b87SWludzik, Jozef ReportFactory( 16e2362796SWludzik, Jozef std::shared_ptr<sdbusplus::asio::connection> bus, 171477fe6aSWludzik, Jozef const std::shared_ptr<sdbusplus::asio::object_server>& objServer, 181477fe6aSWludzik, Jozef SensorCache& sensorCache); 192f9f9b87SWludzik, Jozef 20dcc4e193SKrzysztof Grobelny std::vector<LabeledMetricParameters> convertMetricParams( 21dcc4e193SKrzysztof Grobelny boost::asio::yield_context& yield, 22dcc4e193SKrzysztof Grobelny const ReadingParameters& metricParams) const override; 23dcc4e193SKrzysztof Grobelny 24fdb06a14SSzymon Dompke std::vector<LabeledMetricParameters> convertMetricParams( 25fdb06a14SSzymon Dompke const ReadingParameters& metricParams) const override; 26fdb06a14SSzymon Dompke 2732305f14SSzymon Dompke void updateMetrics( 2832305f14SSzymon Dompke std::vector<std::shared_ptr<interfaces::Metric>>& metrics, bool enabled, 2932305f14SSzymon Dompke const std::vector<LabeledMetricParameters>& labeledMetricParams) 3032305f14SSzymon Dompke const override; 31fdb06a14SSzymon Dompke 32*583ba441SPatrick Williams std::unique_ptr<interfaces::Report> make( 33*583ba441SPatrick Williams const std::string& reportId, const std::string& name, 34b8cc78ddSKrzysztof Grobelny const ReportingType reportingType, 35*583ba441SPatrick Williams const std::vector<ReportAction>& reportActions, Milliseconds period, 36*583ba441SPatrick Williams uint64_t appendLimitIn, const ReportUpdates reportUpdatesIn, 373eb56865SSzymon Dompke interfaces::ReportManager& reportManager, 38d2238194SKrzysztof Grobelny interfaces::JsonStorage& reportStorage, 39*583ba441SPatrick Williams std::vector<LabeledMetricParameters> labeledMetricParams, bool enabled, 40*583ba441SPatrick Williams Readings) const override; 412f9f9b87SWludzik, Jozef 422f9f9b87SWludzik, Jozef private: 4394f71c51SSzymon Dompke Sensors getSensors(const std::vector<LabeledSensorInfo>& sensorPaths) const; 44fdb06a14SSzymon Dompke std::vector<LabeledMetricParameters> getMetricParamsFromSensorTree( 45fdb06a14SSzymon Dompke const ReadingParameters& metricParams, 46fdb06a14SSzymon Dompke const std::vector<utils::SensorTree>& tree) const; 476ccfcbf5SKrzysztof Grobelny 48e2362796SWludzik, Jozef std::shared_ptr<sdbusplus::asio::connection> bus; 492f9f9b87SWludzik, Jozef std::shared_ptr<sdbusplus::asio::object_server> objServer; 501477fe6aSWludzik, Jozef SensorCache& sensorCache; 512f9f9b87SWludzik, Jozef }; 52