#pragma once #include "interfaces/json_storage.hpp" #include "interfaces/threshold.hpp" #include "interfaces/trigger.hpp" #include "interfaces/trigger_manager.hpp" #include "interfaces/trigger_types.hpp" #include #include #include class Trigger : public interfaces::Trigger { public: Trigger( boost::asio::io_context& ioc, const std::shared_ptr& objServer, const std::string& name, const bool isDiscrete, const bool logToJournal, const bool logToRedfish, const bool updateReport, const std::vector< std::pair>& sensorsIn, const std::vector& reportNames, const TriggerThresholdParams& thresholdParams, std::vector>&& thresholds, interfaces::TriggerManager& triggerManager, interfaces::JsonStorage& triggerStorage); Trigger(const Trigger&) = delete; Trigger(Trigger&&) = delete; Trigger& operator=(const Trigger&) = delete; Trigger& operator=(Trigger&&) = delete; std::string getName() const override { return name; } std::string getPath() const override { return path; } bool storeConfiguration() const; private: const std::string name; bool isDiscrete; bool logToJournal; bool logToRedfish; bool updateReport; const std::string path; bool persistent = false; TriggerSensors sensors; std::vector reportNames; TriggerThresholdParams thresholdParams; std::unique_ptr deleteIface; std::unique_ptr triggerIface; std::vector> thresholds; interfaces::JsonStorage::FilePath fileName; interfaces::JsonStorage& triggerStorage; public: static constexpr const char* triggerIfaceName = "xyz.openbmc_project.Telemetry.Trigger"; static constexpr const char* triggerDir = "/xyz/openbmc_project/Telemetry/Triggers/"; static constexpr const char* deleteIfaceName = "xyz.openbmc_project.Object.Delete"; static constexpr size_t triggerVersion = 0; };