report.hpp (e6c417cfe7f092352b4d6058cf852b2d72023e74) | report.hpp (b4ef22e4d365bde35a7fce7950033c9271c68ce7) |
---|---|
1#pragma once 2 3#include "interfaces/clock.hpp" 4#include "interfaces/json_storage.hpp" 5#include "interfaces/metric.hpp" 6#include "interfaces/report.hpp" 7#include "interfaces/report_manager.hpp" 8#include "types/report_action.hpp" 9#include "types/report_types.hpp" 10#include "types/report_updates.hpp" 11#include "types/reporting_type.hpp" 12#include "utils/circular_vector.hpp" 13 14#include <boost/asio/io_context.hpp> 15#include <boost/asio/steady_timer.hpp> 16#include <sdbusplus/asio/object_server.hpp> 17 18#include <chrono> 19#include <memory> | 1#pragma once 2 3#include "interfaces/clock.hpp" 4#include "interfaces/json_storage.hpp" 5#include "interfaces/metric.hpp" 6#include "interfaces/report.hpp" 7#include "interfaces/report_manager.hpp" 8#include "types/report_action.hpp" 9#include "types/report_types.hpp" 10#include "types/report_updates.hpp" 11#include "types/reporting_type.hpp" 12#include "utils/circular_vector.hpp" 13 14#include <boost/asio/io_context.hpp> 15#include <boost/asio/steady_timer.hpp> 16#include <sdbusplus/asio/object_server.hpp> 17 18#include <chrono> 19#include <memory> |
20#include <unordered_set> |
|
20 21class Report : public interfaces::Report 22{ 23 public: 24 Report(boost::asio::io_context& ioc, 25 const std::shared_ptr<sdbusplus::asio::object_server>& objServer, 26 const std::string& reportId, const std::string& reportName, 27 const ReportingType reportingType, 28 std::vector<ReportAction> reportActions, const Milliseconds period, 29 const uint64_t appendLimitIn, const ReportUpdates reportUpdatesIn, 30 interfaces::ReportManager& reportManager, 31 interfaces::JsonStorage& reportStorage, 32 std::vector<std::shared_ptr<interfaces::Metric>> metrics, | 21 22class Report : public interfaces::Report 23{ 24 public: 25 Report(boost::asio::io_context& ioc, 26 const std::shared_ptr<sdbusplus::asio::object_server>& objServer, 27 const std::string& reportId, const std::string& reportName, 28 const ReportingType reportingType, 29 std::vector<ReportAction> reportActions, const Milliseconds period, 30 const uint64_t appendLimitIn, const ReportUpdates reportUpdatesIn, 31 interfaces::ReportManager& reportManager, 32 interfaces::JsonStorage& reportStorage, 33 std::vector<std::shared_ptr<interfaces::Metric>> metrics, |
33 const bool enabled, std::unique_ptr<interfaces::Clock> clock); | 34 const bool enabled, std::unique_ptr<interfaces::Clock> clock, 35 const std::vector<std::string>& triggerIds); |
34 35 Report(const Report&) = delete; 36 Report(Report&&) = delete; 37 Report& operator=(const Report&) = delete; 38 Report& operator=(Report&&) = delete; 39 40 std::string getId() const override 41 { 42 return id; 43 } 44 45 std::string getPath() const override 46 { 47 return reportDir + id; 48 } 49 50 void updateReadings() override; | 36 37 Report(const Report&) = delete; 38 Report(Report&&) = delete; 39 Report& operator=(const Report&) = delete; 40 Report& operator=(Report&&) = delete; 41 42 std::string getId() const override 43 { 44 return id; 45 } 46 47 std::string getPath() const override 48 { 49 return reportDir + id; 50 } 51 52 void updateReadings() override; |
53 void updateTriggerIds(const std::string& triggerId, 54 TriggerIdUpdate updateType) override; |
|
51 bool storeConfiguration() const; 52 53 private: 54 std::unique_ptr<sdbusplus::asio::dbus_interface> makeReportInterface(); 55 static void timerProc(boost::system::error_code, Report& self); 56 void scheduleTimer(Milliseconds interval); 57 std::optional<uint64_t> 58 deduceAppendLimit(const uint64_t appendLimitIn) const; --- 17 unchanged lines hidden (view full) --- 76 ReportUpdates reportUpdates; 77 CircularVector<ReadingData> readingsBuffer; 78 Readings readings = {}; 79 std::shared_ptr<sdbusplus::asio::object_server> objServer; 80 std::unique_ptr<sdbusplus::asio::dbus_interface> reportIface; 81 std::unique_ptr<sdbusplus::asio::dbus_interface> deleteIface; 82 std::vector<std::shared_ptr<interfaces::Metric>> metrics; 83 boost::asio::steady_timer timer; | 55 bool storeConfiguration() const; 56 57 private: 58 std::unique_ptr<sdbusplus::asio::dbus_interface> makeReportInterface(); 59 static void timerProc(boost::system::error_code, Report& self); 60 void scheduleTimer(Milliseconds interval); 61 std::optional<uint64_t> 62 deduceAppendLimit(const uint64_t appendLimitIn) const; --- 17 unchanged lines hidden (view full) --- 80 ReportUpdates reportUpdates; 81 CircularVector<ReadingData> readingsBuffer; 82 Readings readings = {}; 83 std::shared_ptr<sdbusplus::asio::object_server> objServer; 84 std::unique_ptr<sdbusplus::asio::dbus_interface> reportIface; 85 std::unique_ptr<sdbusplus::asio::dbus_interface> deleteIface; 86 std::vector<std::shared_ptr<interfaces::Metric>> metrics; 87 boost::asio::steady_timer timer; |
88 std::unordered_set<std::string> triggerIds; |
|
84 85 interfaces::JsonStorage& reportStorage; 86 bool enabled; 87 std::unique_ptr<interfaces::Clock> clock; 88 89 public: 90 static constexpr const char* reportIfaceName = 91 "xyz.openbmc_project.Telemetry.Report"; 92 static constexpr const char* reportDir = 93 "/xyz/openbmc_project/Telemetry/Reports/"; 94 static constexpr const char* deleteIfaceName = 95 "xyz.openbmc_project.Object.Delete"; 96 static constexpr size_t reportVersion = 6; 97}; | 89 90 interfaces::JsonStorage& reportStorage; 91 bool enabled; 92 std::unique_ptr<interfaces::Clock> clock; 93 94 public: 95 static constexpr const char* reportIfaceName = 96 "xyz.openbmc_project.Telemetry.Report"; 97 static constexpr const char* reportDir = 98 "/xyz/openbmc_project/Telemetry/Reports/"; 99 static constexpr const char* deleteIfaceName = 100 "xyz.openbmc_project.Object.Delete"; 101 static constexpr size_t reportVersion = 6; 102}; |