| #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; |
| }; |