blob: fb40614110b55ff8386278f8964bf0dfaf91307a [file] [log] [blame]
Wludzik, Jozefcb88cfd2020-09-28 16:38:57 +02001#pragma once
2
Wludzik, Jozef2f9f9b82020-10-13 09:07:45 +02003#include "interfaces/report.hpp"
4#include "interfaces/report_manager.hpp"
5#include "interfaces/types.hpp"
6
Wludzik, Jozefcb88cfd2020-09-28 16:38:57 +02007#include <boost/asio/io_context.hpp>
8#include <sdbusplus/asio/object_server.hpp>
9
10#include <chrono>
11#include <memory>
12
Wludzik, Jozef2f9f9b82020-10-13 09:07:45 +020013class Report : public interfaces::Report
Wludzik, Jozefcb88cfd2020-09-28 16:38:57 +020014{
15 public:
16 Report(boost::asio::io_context& ioc,
17 const std::shared_ptr<sdbusplus::asio::object_server>& objServer,
Wludzik, Jozef2f9f9b82020-10-13 09:07:45 +020018 const std::string& reportName, const std::string& reportingType,
Wludzik, Jozefcb88cfd2020-09-28 16:38:57 +020019 const bool emitsReadingsSignal,
20 const bool logToMetricReportsCollection,
21 const std::chrono::milliseconds period,
Wludzik, Jozef2f9f9b82020-10-13 09:07:45 +020022 const ReadingParameters& metricParams,
23 interfaces::ReportManager& reportManager);
Wludzik, Jozefcb88cfd2020-09-28 16:38:57 +020024 ~Report() = default;
25
26 Report(Report&) = delete;
27 Report(Report&&) = delete;
28 Report& operator=(Report&) = delete;
29 Report& operator=(Report&&) = delete;
30
Wludzik, Jozef2f9f9b82020-10-13 09:07:45 +020031 std::string getName() const override
32 {
33 return name;
34 }
35
36 std::string getPath() const override
37 {
38 return path;
39 }
Wludzik, Jozefcb88cfd2020-09-28 16:38:57 +020040
41 private:
Wludzik, Jozef2f9f9b82020-10-13 09:07:45 +020042 const std::string name;
43 const std::string path;
Wludzik, Jozefcb88cfd2020-09-28 16:38:57 +020044 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;
Wludzik, Jozef2f9f9b82020-10-13 09:07:45 +020048
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";
Wludzik, Jozefcb88cfd2020-09-28 16:38:57 +020056};