1 #pragma once 2 3 #include "interfaces/json_storage.hpp" 4 #include "interfaces/trigger.hpp" 5 #include "interfaces/trigger_manager.hpp" 6 #include "types/trigger_types.hpp" 7 8 #include <boost/asio/spawn.hpp> 9 #include <sdbusplus/message/types.hpp> 10 11 #include <memory> 12 #include <utility> 13 14 namespace interfaces 15 { 16 17 class TriggerFactory 18 { 19 public: 20 virtual ~TriggerFactory() = default; 21 22 virtual std::unique_ptr<interfaces::Trigger> make( 23 const std::string& name, const std::vector<std::string>& triggerActions, 24 const std::vector<std::string>& reportNames, 25 interfaces::TriggerManager& triggerManager, 26 interfaces::JsonStorage& triggerStorage, 27 const LabeledTriggerThresholdParams& labeledThresholdParams, 28 const std::vector<LabeledSensorInfo>& labeledSensorsInfo) const = 0; 29 30 virtual std::vector<LabeledSensorInfo> 31 getLabeledSensorsInfo(boost::asio::yield_context& yield, 32 const SensorsInfo& sensorsInfo) const = 0; 33 }; 34 35 } // namespace interfaces 36