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