176833cb5SWludzik, Jozef #pragma once 276833cb5SWludzik, Jozef 3d960e1f3SWludzik, Jozef #include "interfaces/report_manager.hpp" 476833cb5SWludzik, Jozef #include "interfaces/trigger_factory.hpp" 576833cb5SWludzik, Jozef #include "interfaces/trigger_manager.hpp" 6e28aa53dSSzymon Dompke #include "trigger.hpp" 71cdd7e4fSSzymon Dompke #include "utils/dbus_path_utils.hpp" 876833cb5SWludzik, Jozef 976833cb5SWludzik, Jozef #include <sdbusplus/asio/object_server.hpp> 1076833cb5SWludzik, Jozef 1176833cb5SWludzik, Jozef #include <memory> 1276833cb5SWludzik, Jozef #include <vector> 1376833cb5SWludzik, Jozef 1476833cb5SWludzik, Jozef class TriggerManager : public interfaces::TriggerManager 1576833cb5SWludzik, Jozef { 1676833cb5SWludzik, Jozef public: 1776833cb5SWludzik, Jozef TriggerManager( 1876833cb5SWludzik, Jozef std::unique_ptr<interfaces::TriggerFactory> triggerFactory, 19a4e67616SCezary Zwolak std::unique_ptr<interfaces::JsonStorage> triggerStorage, 2076833cb5SWludzik, Jozef const std::shared_ptr<sdbusplus::asio::object_server>& objServer); 2176833cb5SWludzik, Jozef 2231db7f71SKrzysztof Grobelny TriggerManager(const TriggerManager&) = delete; 2376833cb5SWludzik, Jozef TriggerManager(TriggerManager&&) = delete; 2431db7f71SKrzysztof Grobelny TriggerManager& operator=(const TriggerManager&) = delete; 2576833cb5SWludzik, Jozef TriggerManager& operator=(TriggerManager&&) = delete; 2676833cb5SWludzik, Jozef 2776833cb5SWludzik, Jozef void removeTrigger(const interfaces::Trigger* trigger) override; 2876833cb5SWludzik, Jozef 29b4ef22e4SSzymon Dompke static void verifyReportIds(const std::vector<std::string>& newReportIds); 3032305f14SSzymon Dompke static void verifyThresholdParams( 3132305f14SSzymon Dompke const LabeledTriggerThresholdParams& thresholdParams); 32b4ef22e4SSzymon Dompke 3376833cb5SWludzik, Jozef private: 3476833cb5SWludzik, Jozef std::unique_ptr<interfaces::TriggerFactory> triggerFactory; 35a4e67616SCezary Zwolak std::unique_ptr<interfaces::JsonStorage> triggerStorage; 3676833cb5SWludzik, Jozef std::unique_ptr<sdbusplus::asio::dbus_interface> managerIface; 3776833cb5SWludzik, Jozef std::vector<std::unique_ptr<interfaces::Trigger>> triggers; 3876833cb5SWludzik, Jozef 3932305f14SSzymon Dompke void verifyAddTrigger( 4032305f14SSzymon Dompke const std::vector<std::string>& reportIds, 4132305f14SSzymon Dompke const LabeledTriggerThresholdParams& thresholdParams) const; 424416fce6SCezary Zwolak 43*583ba441SPatrick Williams interfaces::Trigger& addTrigger( 44*583ba441SPatrick Williams const std::string& triggerId, const std::string& triggerName, 452001301aSSzymon Dompke const std::vector<std::string>& triggerActions, 464416fce6SCezary Zwolak const std::vector<LabeledSensorInfo>& labeledSensors, 47b8cc78ddSKrzysztof Grobelny const std::vector<std::string>& reportIds, 484416fce6SCezary Zwolak const LabeledTriggerThresholdParams& labeledThresholdParams); 494416fce6SCezary Zwolak void loadFromPersistent(); 504416fce6SCezary Zwolak 5176833cb5SWludzik, Jozef public: 5276833cb5SWludzik, Jozef static constexpr size_t maxTriggers{TELEMETRY_MAX_TRIGGERS}; 5376833cb5SWludzik, Jozef static constexpr const char* triggerManagerIfaceName = 5476833cb5SWludzik, Jozef "xyz.openbmc_project.Telemetry.TriggerManager"; 5576833cb5SWludzik, Jozef static constexpr const char* triggerManagerPath = 5676833cb5SWludzik, Jozef "/xyz/openbmc_project/Telemetry/Triggers"; 5732305f14SSzymon Dompke static constexpr std::string_view triggerNameDefault = "Trigger"; 5832305f14SSzymon Dompke 5932305f14SSzymon Dompke static_assert(!triggerNameDefault.empty(), 6032305f14SSzymon Dompke "Default trigger name cannot be empty."); 6176833cb5SWludzik, Jozef }; 62