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