blob: bdf926818cd248e5f565e38052e18c53bad995cc [file] [log] [blame]
Wludzik, Jozef2f9f9b82020-10-13 09:07:45 +02001#pragma once
2
3#include "interfaces/report_factory.hpp"
Wludzik, Jozefe2362792020-10-27 17:23:55 +01004#include "interfaces/sensor.hpp"
Wludzik, Jozef2f9f9b82020-10-13 09:07:45 +02005
6#include <boost/asio/io_context.hpp>
7#include <sdbusplus/asio/object_server.hpp>
8
9class ReportFactory : public interfaces::ReportFactory
10{
11 public:
12 ReportFactory(
Wludzik, Jozefe2362792020-10-27 17:23:55 +010013 std::shared_ptr<sdbusplus::asio::connection> bus,
Wludzik, Jozef2f9f9b82020-10-13 09:07:45 +020014 const std::shared_ptr<sdbusplus::asio::object_server>& objServer);
15
Wludzik, Jozefe2362792020-10-27 17:23:55 +010016 std::unique_ptr<interfaces::Report> make(
17 std::optional<std::reference_wrapper<boost::asio::yield_context>> yield,
18 const std::string& name, const std::string& reportingType,
19 bool emitsReadingsSignal, bool logToMetricReportsCollection,
20 std::chrono::milliseconds period, const ReadingParameters& metricParams,
21 interfaces::ReportManager& reportManager,
22 interfaces::JsonStorage& reportStorage) const override;
Wludzik, Jozef2f9f9b82020-10-13 09:07:45 +020023
24 private:
Wludzik, Jozefe2362792020-10-27 17:23:55 +010025 std::shared_ptr<sdbusplus::asio::connection> bus;
Wludzik, Jozef2f9f9b82020-10-13 09:07:45 +020026 std::shared_ptr<sdbusplus::asio::object_server> objServer;
27};