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 void verifyAddTrigger(const std::string& triggerName, bool isDiscrete, 34 const LabeledTriggerThresholdParams& thresholdParams); 35 36 interfaces::Trigger& 37 addTrigger(const std::string& triggerName, bool isDiscrete, 38 bool logToJournal, bool logToRedfish, bool updateReport, 39 const std::vector<LabeledSensorInfo>& labeledSensors, 40 const std::vector<std::string>& reportNames, 41 const LabeledTriggerThresholdParams& labeledThresholdParams); 42 void loadFromPersistent(); 43 44 public: 45 static constexpr size_t maxTriggers{TELEMETRY_MAX_TRIGGERS}; 46 static constexpr const char* triggerManagerIfaceName = 47 "xyz.openbmc_project.Telemetry.TriggerManager"; 48 static constexpr const char* triggerManagerPath = 49 "/xyz/openbmc_project/Telemetry/Triggers"; 50 }; 51