1 #pragma once 2 3 #include "interfaces/report_manager.hpp" 4 #include "interfaces/trigger_factory.hpp" 5 #include "interfaces/trigger_manager.hpp" 6 #include "trigger.hpp" 7 8 #include <sdbusplus/asio/object_server.hpp> 9 10 #include <memory> 11 #include <vector> 12 13 class TriggerManager : public interfaces::TriggerManager 14 { 15 public: 16 TriggerManager( 17 std::unique_ptr<interfaces::TriggerFactory> triggerFactory, 18 std::unique_ptr<interfaces::JsonStorage> triggerStorage, 19 const std::shared_ptr<sdbusplus::asio::object_server>& objServer); 20 21 TriggerManager(const TriggerManager&) = delete; 22 TriggerManager(TriggerManager&&) = delete; 23 TriggerManager& operator=(const TriggerManager&) = delete; 24 TriggerManager& operator=(TriggerManager&&) = delete; 25 26 void removeTrigger(const interfaces::Trigger* trigger) override; 27 28 private: 29 std::unique_ptr<interfaces::TriggerFactory> triggerFactory; 30 std::unique_ptr<interfaces::JsonStorage> triggerStorage; 31 std::unique_ptr<sdbusplus::asio::dbus_interface> managerIface; 32 std::vector<std::unique_ptr<interfaces::Trigger>> triggers; 33 34 void verifyAddTrigger(const std::string& triggerId, 35 const std::string& triggerName) const; 36 37 interfaces::Trigger& 38 addTrigger(const std::string& triggerId, const std::string& triggerName, 39 const std::vector<std::string>& triggerActions, 40 const std::vector<LabeledSensorInfo>& labeledSensors, 41 const std::vector<std::string>& reportIds, 42 const LabeledTriggerThresholdParams& labeledThresholdParams); 43 void loadFromPersistent(); 44 45 public: 46 static constexpr size_t maxTriggers{TELEMETRY_MAX_TRIGGERS}; 47 static constexpr size_t maxTriggerIdLength{ 48 TELEMETRY_MAX_DBUS_PATH_LENGTH - 49 std::string_view(Trigger::triggerDir).length()}; 50 static constexpr const char* triggerManagerIfaceName = 51 "xyz.openbmc_project.Telemetry.TriggerManager"; 52 static constexpr const char* triggerManagerPath = 53 "/xyz/openbmc_project/Telemetry/Triggers"; 54 static constexpr const char* triggerNameDefault = "Trigger"; 55 }; 56