xref: /openbmc/telemetry/src/report.hpp (revision 2f9f9b875ad61666b1308a94fa700ae6e9d5ed1e)
1 #pragma once
2 
3 #include "interfaces/report.hpp"
4 #include "interfaces/report_manager.hpp"
5 #include "interfaces/types.hpp"
6 
7 #include <boost/asio/io_context.hpp>
8 #include <sdbusplus/asio/object_server.hpp>
9 
10 #include <chrono>
11 #include <memory>
12 
13 class Report : public interfaces::Report
14 {
15   public:
16     Report(boost::asio::io_context& ioc,
17            const std::shared_ptr<sdbusplus::asio::object_server>& objServer,
18            const std::string& reportName, const std::string& reportingType,
19            const bool emitsReadingsSignal,
20            const bool logToMetricReportsCollection,
21            const std::chrono::milliseconds period,
22            const ReadingParameters& metricParams,
23            interfaces::ReportManager& reportManager);
24     ~Report() = default;
25 
26     Report(Report&) = delete;
27     Report(Report&&) = delete;
28     Report& operator=(Report&) = delete;
29     Report& operator=(Report&&) = delete;
30 
31     std::string getName() const override
32     {
33         return name;
34     }
35 
36     std::string getPath() const override
37     {
38         return path;
39     }
40 
41   private:
42     const std::string name;
43     const std::string path;
44     std::chrono::milliseconds interval;
45     std::shared_ptr<sdbusplus::asio::object_server> objServer;
46     std::unique_ptr<sdbusplus::asio::dbus_interface> reportIface;
47     std::unique_ptr<sdbusplus::asio::dbus_interface> deleteIface;
48 
49   public:
50     static constexpr const char* reportIfaceName =
51         "xyz.openbmc_project.Telemetry.Report";
52     static constexpr const char* reportDir =
53         "/xyz/openbmc_project/Telemetry/Reports/";
54     static constexpr const char* deleteIfaceName =
55         "xyz.openbmc_project.Object.Delete";
56 };
57