1 #pragma once
2 
3 #include "interfaces/json_storage.hpp"
4 #include "interfaces/trigger.hpp"
5 #include "interfaces/trigger_manager.hpp"
6 #include "interfaces/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, bool isDiscrete, bool logToJournal,
24         bool logToRedfish, bool updateReport,
25         const std::vector<std::string>& reportNames,
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