#include "trigger.hpp" #include "interfaces/types.hpp" Trigger::Trigger( boost::asio::io_context& ioc, const std::shared_ptr& objServer, const std::string& nameIn, const bool isDiscrete, const bool logToJournal, const bool logToRedfish, const bool updateReport, const std::vector>& sensorsIn, const std::vector& reportNamesIn, const TriggerThresholdParams& thresholdParamsIn, std::vector>&& thresholdsIn, interfaces::TriggerManager& triggerManager) : name(nameIn), path(triggerDir + name), persistent(false), sensors(sensorsIn), reportNames(reportNamesIn), thresholdParams(thresholdParamsIn), thresholds(std::move(thresholdsIn)) { deleteIface = objServer->add_unique_interface( path, deleteIfaceName, [this, &ioc, &triggerManager](auto& dbusIface) { dbusIface.register_method("Delete", [this, &ioc, &triggerManager] { boost::asio::post(ioc, [this, &triggerManager] { triggerManager.removeTrigger(this); }); }); }); triggerIface = objServer->add_unique_interface( path, triggerIfaceName, [this, isDiscrete, logToJournal, logToRedfish, updateReport](auto& dbusIface) { dbusIface.register_property_r( "Persistent", persistent, sdbusplus::vtable::property_::emits_change, [](const auto& x) { return x; }); dbusIface.register_property_r( "Thresholds", thresholdParams, sdbusplus::vtable::property_::emits_change, [](const auto& x) { return x; }); dbusIface.register_property_r( "Sensors", sensors, sdbusplus::vtable::property_::emits_change, [](const auto& x) { return x; }); dbusIface.register_property_r( "ReportNames", reportNames, sdbusplus::vtable::property_::emits_change, [](const auto& x) { return x; }); dbusIface.register_property_r("Discrete", isDiscrete, sdbusplus::vtable::property_::const_, [](const auto& x) { return x; }); dbusIface.register_property_r("LogToJournal", logToJournal, sdbusplus::vtable::property_::const_, [](const auto& x) { return x; }); dbusIface.register_property_r("LogToRedfish", logToRedfish, sdbusplus::vtable::property_::const_, [](const auto& x) { return x; }); dbusIface.register_property_r("UpdateReport", updateReport, sdbusplus::vtable::property_::const_, [](const auto& x) { return x; }); }); for (const auto& threshold : thresholds) { threshold->initialize(); } }