1 #pragma once 2 3 #include "interfaces/json_storage.hpp" 4 #include "interfaces/threshold.hpp" 5 #include "interfaces/trigger.hpp" 6 #include "interfaces/trigger_factory.hpp" 7 #include "interfaces/trigger_manager.hpp" 8 #include "types/trigger_types.hpp" 9 10 #include <boost/asio/io_context.hpp> 11 #include <sdbusplus/asio/object_server.hpp> 12 13 #include <memory> 14 15 class Trigger : public interfaces::Trigger 16 { 17 public: 18 Trigger(boost::asio::io_context& ioc, 19 const std::shared_ptr<sdbusplus::asio::object_server>& objServer, 20 const std::string& id, const std::string& name, 21 const std::vector<TriggerAction>& triggerActions, 22 const std::shared_ptr<std::vector<std::string>> reportIds, 23 std::vector<std::shared_ptr<interfaces::Threshold>>&& thresholds, 24 interfaces::TriggerManager& triggerManager, 25 interfaces::JsonStorage& triggerStorage, 26 const interfaces::TriggerFactory& triggerFactory, 27 Sensors sensorsIn); 28 29 Trigger(const Trigger&) = delete; 30 Trigger(Trigger&&) = delete; 31 Trigger& operator=(const Trigger&) = delete; 32 Trigger& operator=(Trigger&&) = delete; 33 34 std::string getId() const override 35 { 36 return id; 37 } 38 39 std::string getPath() const override 40 { 41 return path; 42 } 43 44 bool storeConfiguration() const; 45 46 private: 47 std::string id; 48 std::string name; 49 std::vector<TriggerAction> triggerActions; 50 std::string path; 51 bool persistent = false; 52 std::shared_ptr<std::vector<std::string>> reportIds; 53 std::unique_ptr<sdbusplus::asio::dbus_interface> deleteIface; 54 std::unique_ptr<sdbusplus::asio::dbus_interface> triggerIface; 55 std::vector<std::shared_ptr<interfaces::Threshold>> thresholds; 56 57 interfaces::JsonStorage::FilePath fileName; 58 interfaces::JsonStorage& triggerStorage; 59 Sensors sensors; 60 61 public: 62 static constexpr const char* triggerIfaceName = 63 "xyz.openbmc_project.Telemetry.Trigger"; 64 static constexpr const char* triggerDir = 65 "/xyz/openbmc_project/Telemetry/Triggers/"; 66 static constexpr const char* deleteIfaceName = 67 "xyz.openbmc_project.Object.Delete"; 68 static constexpr size_t triggerVersion = 1; 69 }; 70