#pragma once #include "interfaces/json_storage.hpp" #include "interfaces/threshold.hpp" #include "interfaces/trigger.hpp" #include "interfaces/trigger_factory.hpp" #include "interfaces/trigger_manager.hpp" #include "types/trigger_types.hpp" #include "utils/messanger.hpp" #include <boost/asio/io_context.hpp> #include <sdbusplus/asio/object_server.hpp> #include <sdbusplus/message.hpp> #include <memory> class Trigger : public interfaces::Trigger { public: Trigger(boost::asio::io_context& ioc, const std::shared_ptr<sdbusplus::asio::object_server>& objServer, TriggerId&& id, const std::string& name, const std::vector<TriggerAction>& triggerActions, const std::shared_ptr<std::vector<std::string>> reportIds, std::vector<std::shared_ptr<interfaces::Threshold>>&& thresholds, interfaces::TriggerManager& triggerManager, interfaces::JsonStorage& triggerStorage, const interfaces::TriggerFactory& triggerFactory, Sensors sensorsIn); Trigger(const Trigger&) = delete; Trigger(Trigger&&) = delete; Trigger& operator=(const Trigger&) = delete; Trigger& operator=(Trigger&&) = delete; std::string getId() const override { return *id; } std::string getPath() const override { return path.str; } bool storeConfiguration() const; private: std::vector<LabeledSensorInfo> getLabeledSensorInfo() const; std::vector<LabeledThresholdParam> getLabeledThresholds() const; bool isDiscreate() const; const TriggerId id; const sdbusplus::message::object_path path; std::string name; std::vector<TriggerAction> triggerActions; bool persistent = false; std::shared_ptr<std::vector<std::string>> reportIds; std::unique_ptr<sdbusplus::asio::dbus_interface> deleteIface; std::unique_ptr<sdbusplus::asio::dbus_interface> triggerIface; std::vector<std::shared_ptr<interfaces::Threshold>> thresholds; interfaces::JsonStorage::FilePath fileName; interfaces::JsonStorage& triggerStorage; Sensors sensors; utils::Messanger messanger; public: static constexpr const char* triggerIfaceName = "xyz.openbmc_project.Telemetry.Trigger"; static constexpr const char* deleteIfaceName = "xyz.openbmc_project.Object.Delete"; static constexpr size_t triggerVersion = 2; };