xref: /openbmc/telemetry/src/report_factory.hpp (revision 583ba441654657bb4ba9d051b747144a7258c159)
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