blob: b5b4a2283b1daf92c08b6cf5d363b97a383e1825 [file] [log] [blame]
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01001#pragma once
2
3#include "interfaces/trigger_factory.hpp"
4#include "interfaces/trigger_manager.hpp"
5
6#include <sdbusplus/asio/object_server.hpp>
7
8#include <memory>
9#include <vector>
10
11class TriggerManager : public interfaces::TriggerManager
12{
13 public:
14 TriggerManager(
15 std::unique_ptr<interfaces::TriggerFactory> triggerFactory,
16 const std::shared_ptr<sdbusplus::asio::object_server>& objServer);
17
18 TriggerManager(TriggerManager&) = delete;
19 TriggerManager(TriggerManager&&) = delete;
20 TriggerManager& operator=(TriggerManager&) = delete;
21 TriggerManager& operator=(TriggerManager&&) = delete;
22
23 void removeTrigger(const interfaces::Trigger* trigger) override;
24
25 private:
26 std::unique_ptr<interfaces::TriggerFactory> triggerFactory;
27 std::unique_ptr<sdbusplus::asio::dbus_interface> managerIface;
28 std::vector<std::unique_ptr<interfaces::Trigger>> triggers;
29
30 public:
31 static constexpr size_t maxTriggers{TELEMETRY_MAX_TRIGGERS};
32 static constexpr const char* triggerManagerIfaceName =
33 "xyz.openbmc_project.Telemetry.TriggerManager";
34 static constexpr const char* triggerManagerPath =
35 "/xyz/openbmc_project/Telemetry/Triggers";
36};