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& id, const std::string& name, 24 const std::vector<std::string>& triggerActions, 25 const std::vector<std::string>& reportIds, 26 interfaces::TriggerManager& triggerManager, 27 interfaces::JsonStorage& triggerStorage, 28 const LabeledTriggerThresholdParams& labeledThresholdParams, 29 const std::vector<LabeledSensorInfo>& labeledSensorsInfo) const = 0; 30 31 virtual std::vector<LabeledSensorInfo> 32 getLabeledSensorsInfo(boost::asio::yield_context& yield, 33 const SensorsInfo& sensorsInfo) const = 0; 34 }; 35 36 } // namespace interfaces 37