1 #pragma once 2 3 #include "interfaces/report_manager.hpp" 4 #include "interfaces/trigger_factory.hpp" 5 #include "interfaces/trigger_manager.hpp" 6 7 #include <sdbusplus/asio/object_server.hpp> 8 9 #include <memory> 10 #include <vector> 11 12 class TriggerManager : public interfaces::TriggerManager 13 { 14 public: 15 TriggerManager( 16 std::unique_ptr<interfaces::TriggerFactory> triggerFactory, 17 std::unique_ptr<interfaces::JsonStorage> triggerStorage, 18 const std::shared_ptr<sdbusplus::asio::object_server>& objServer); 19 20 TriggerManager(TriggerManager&) = delete; 21 TriggerManager(TriggerManager&&) = delete; 22 TriggerManager& operator=(TriggerManager&) = delete; 23 TriggerManager& operator=(TriggerManager&&) = delete; 24 25 void removeTrigger(const interfaces::Trigger* trigger) override; 26 27 private: 28 std::unique_ptr<interfaces::TriggerFactory> triggerFactory; 29 std::unique_ptr<interfaces::JsonStorage> triggerStorage; 30 std::unique_ptr<sdbusplus::asio::dbus_interface> managerIface; 31 std::vector<std::unique_ptr<interfaces::Trigger>> triggers; 32 33 public: 34 static constexpr size_t maxTriggers{TELEMETRY_MAX_TRIGGERS}; 35 static constexpr const char* triggerManagerIfaceName = 36 "xyz.openbmc_project.Telemetry.TriggerManager"; 37 static constexpr const char* triggerManagerPath = 38 "/xyz/openbmc_project/Telemetry/Triggers"; 39 }; 40