176833cb5SWludzik, Jozef #pragma once 276833cb5SWludzik, Jozef 3a4e67616SCezary Zwolak #include "interfaces/json_storage.hpp" 41477fe6aSWludzik, Jozef #include "interfaces/threshold.hpp" 576833cb5SWludzik, Jozef #include "interfaces/trigger.hpp" 694f71c51SSzymon Dompke #include "interfaces/trigger_factory.hpp" 776833cb5SWludzik, Jozef #include "interfaces/trigger_manager.hpp" 8dcc4e193SKrzysztof Grobelny #include "types/trigger_types.hpp" 9e6d48874SKrzysztof Grobelny #include "utils/messanger.hpp" 1076833cb5SWludzik, Jozef 1176833cb5SWludzik, Jozef #include <boost/asio/io_context.hpp> 1276833cb5SWludzik, Jozef #include <sdbusplus/asio/object_server.hpp> 13*1cdd7e4fSSzymon Dompke #include <sdbusplus/message.hpp> 1476833cb5SWludzik, Jozef 1576833cb5SWludzik, Jozef #include <memory> 1676833cb5SWludzik, Jozef 1776833cb5SWludzik, Jozef class Trigger : public interfaces::Trigger 1876833cb5SWludzik, Jozef { 1976833cb5SWludzik, Jozef public: 204416fce6SCezary Zwolak Trigger(boost::asio::io_context& ioc, 2176833cb5SWludzik, Jozef const std::shared_ptr<sdbusplus::asio::object_server>& objServer, 22b7b7e1b6SSzymon Dompke TriggerId&& id, const std::string& name, 2394f71c51SSzymon Dompke const std::vector<TriggerAction>& triggerActions, 2494f71c51SSzymon Dompke const std::shared_ptr<std::vector<std::string>> reportIds, 251477fe6aSWludzik, Jozef std::vector<std::shared_ptr<interfaces::Threshold>>&& thresholds, 26a4e67616SCezary Zwolak interfaces::TriggerManager& triggerManager, 2794f71c51SSzymon Dompke interfaces::JsonStorage& triggerStorage, 28e6d48874SKrzysztof Grobelny const interfaces::TriggerFactory& triggerFactory, 29e6d48874SKrzysztof Grobelny Sensors sensorsIn); 3076833cb5SWludzik, Jozef 3176833cb5SWludzik, Jozef Trigger(const Trigger&) = delete; 3276833cb5SWludzik, Jozef Trigger(Trigger&&) = delete; 3376833cb5SWludzik, Jozef Trigger& operator=(const Trigger&) = delete; 3476833cb5SWludzik, Jozef Trigger& operator=(Trigger&&) = delete; 3576833cb5SWludzik, Jozef getId() const36e28aa53dSSzymon Dompke std::string getId() const override 3776833cb5SWludzik, Jozef { 38b7b7e1b6SSzymon Dompke return *id; 3976833cb5SWludzik, Jozef } 4076833cb5SWludzik, Jozef getPath() const4176833cb5SWludzik, Jozef std::string getPath() const override 4276833cb5SWludzik, Jozef { 43*1cdd7e4fSSzymon Dompke return path.str; 4476833cb5SWludzik, Jozef } 4576833cb5SWludzik, Jozef 46a4e67616SCezary Zwolak bool storeConfiguration() const; 47a4e67616SCezary Zwolak 4876833cb5SWludzik, Jozef private: 4955824558SKrzysztof Grobelny std::vector<LabeledSensorInfo> getLabeledSensorInfo() const; 5055824558SKrzysztof Grobelny std::vector<LabeledThresholdParam> getLabeledThresholds() const; 5155824558SKrzysztof Grobelny bool isDiscreate() const; 5255824558SKrzysztof Grobelny 53b7b7e1b6SSzymon Dompke const TriggerId id; 54*1cdd7e4fSSzymon Dompke const sdbusplus::message::object_path path; 55e28aa53dSSzymon Dompke std::string name; 5694f71c51SSzymon Dompke std::vector<TriggerAction> triggerActions; 57a4e67616SCezary Zwolak bool persistent = false; 5894f71c51SSzymon Dompke std::shared_ptr<std::vector<std::string>> reportIds; 5976833cb5SWludzik, Jozef std::unique_ptr<sdbusplus::asio::dbus_interface> deleteIface; 6076833cb5SWludzik, Jozef std::unique_ptr<sdbusplus::asio::dbus_interface> triggerIface; 611477fe6aSWludzik, Jozef std::vector<std::shared_ptr<interfaces::Threshold>> thresholds; 6276833cb5SWludzik, Jozef 63a4e67616SCezary Zwolak interfaces::JsonStorage::FilePath fileName; 64a4e67616SCezary Zwolak interfaces::JsonStorage& triggerStorage; 6594f71c51SSzymon Dompke Sensors sensors; 66e6d48874SKrzysztof Grobelny utils::Messanger messanger; 67a4e67616SCezary Zwolak 6876833cb5SWludzik, Jozef public: 6976833cb5SWludzik, Jozef static constexpr const char* triggerIfaceName = 7076833cb5SWludzik, Jozef "xyz.openbmc_project.Telemetry.Trigger"; 7176833cb5SWludzik, Jozef static constexpr const char* deleteIfaceName = 7276833cb5SWludzik, Jozef "xyz.openbmc_project.Object.Delete"; 73b7b7e1b6SSzymon Dompke static constexpr size_t triggerVersion = 2; 7476833cb5SWludzik, Jozef }; 75