#pragma once #include "interfaces/report_manager.hpp" #include "interfaces/sensor.hpp" #include "interfaces/trigger_factory.hpp" #include "sensor_cache.hpp" #include <sdbusplus/asio/object_server.hpp> class TriggerFactory : public interfaces::TriggerFactory { public: TriggerFactory(std::shared_ptr<sdbusplus::asio::connection> bus, std::shared_ptr<sdbusplus::asio::object_server> objServer, SensorCache& sensorCache, interfaces::ReportManager& reportManager); std::unique_ptr<interfaces::Trigger> make( boost::asio::yield_context& yield, const std::string& name, bool isDiscrete, bool logToJournal, bool logToRedfish, bool updateReport, const std::vector< std::pair<sdbusplus::message::object_path, std::string>>& sensors, const std::vector<std::string>& reportNames, const TriggerThresholdParams& thresholdParams, interfaces::TriggerManager& triggerManager, interfaces::JsonStorage& triggerStorage) const override; private: std::shared_ptr<sdbusplus::asio::connection> bus; std::shared_ptr<sdbusplus::asio::object_server> objServer; SensorCache& sensorCache; interfaces::ReportManager& reportManager; std::pair<std::vector<std::shared_ptr<interfaces::Sensor>>, std::vector<std::string>> getSensors(boost::asio::yield_context& yield, const std::vector< std::pair<sdbusplus::message::object_path, std::string>>& sensorPaths) const; };