xref: /openbmc/telemetry/src/interfaces/trigger_factory.hpp (revision 2001301a0f2ce71797cf171305a1d0eb0d288fe6)
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