#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(const std::string& name, const std::vector<std::string>& triggerActions, const std::vector<std::string>& reportNames, interfaces::TriggerManager& triggerManager, interfaces::JsonStorage& triggerStorage, const LabeledTriggerThresholdParams& labeledThresholdParams, const std::vector<LabeledSensorInfo>& labeledSensorsinfo) const override; std::vector<LabeledSensorInfo> getLabeledSensorsInfo(boost::asio::yield_context& yield, const SensorsInfo& sensorsInfo) const; private: std::shared_ptr<sdbusplus::asio::connection> bus; std::shared_ptr<sdbusplus::asio::object_server> objServer; SensorCache& sensorCache; interfaces::ReportManager& reportManager; std::pair<Sensors, std::vector<std::string>> getSensors( const std::vector<LabeledSensorInfo>& labeledSensorsInfo) const; };