blob: c3acd369d27ad6806bf45c424f650f265a794a71 [file] [log] [blame]
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01001#pragma once
2
Wludzik, Jozefd960e1f2021-01-08 09:25:59 +01003#include "interfaces/report_manager.hpp"
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01004#include "interfaces/trigger_factory.hpp"
5#include "interfaces/trigger_manager.hpp"
6
7#include <sdbusplus/asio/object_server.hpp>
8
9#include <memory>
10#include <vector>
11
12class TriggerManager : public interfaces::TriggerManager
13{
14 public:
15 TriggerManager(
16 std::unique_ptr<interfaces::TriggerFactory> triggerFactory,
Cezary Zwolaka4e67612021-02-18 13:16:16 +010017 std::unique_ptr<interfaces::JsonStorage> triggerStorage,
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010018 const std::shared_ptr<sdbusplus::asio::object_server>& objServer);
19
20 TriggerManager(TriggerManager&) = delete;
21 TriggerManager(TriggerManager&&) = delete;
22 TriggerManager& operator=(TriggerManager&) = delete;
23 TriggerManager& operator=(TriggerManager&&) = delete;
24
25 void removeTrigger(const interfaces::Trigger* trigger) override;
26
27 private:
28 std::unique_ptr<interfaces::TriggerFactory> triggerFactory;
Cezary Zwolaka4e67612021-02-18 13:16:16 +010029 std::unique_ptr<interfaces::JsonStorage> triggerStorage;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010030 std::unique_ptr<sdbusplus::asio::dbus_interface> managerIface;
31 std::vector<std::unique_ptr<interfaces::Trigger>> triggers;
32
Szymon Dompke20013012021-07-23 09:54:20 +020033 void verifyAddTrigger(const std::string& triggerName);
Cezary Zwolak4416fce2021-03-17 03:21:06 +010034
35 interfaces::Trigger&
Szymon Dompke20013012021-07-23 09:54:20 +020036 addTrigger(const std::string& triggerName,
37 const std::vector<std::string>& triggerActions,
Cezary Zwolak4416fce2021-03-17 03:21:06 +010038 const std::vector<LabeledSensorInfo>& labeledSensors,
39 const std::vector<std::string>& reportNames,
40 const LabeledTriggerThresholdParams& labeledThresholdParams);
41 void loadFromPersistent();
42
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010043 public:
44 static constexpr size_t maxTriggers{TELEMETRY_MAX_TRIGGERS};
45 static constexpr const char* triggerManagerIfaceName =
46 "xyz.openbmc_project.Telemetry.TriggerManager";
47 static constexpr const char* triggerManagerPath =
48 "/xyz/openbmc_project/Telemetry/Triggers";
49};