blob: 904f5200cd848bf0e917931c05233bafdc590cf2 [file] [log] [blame]
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01001#pragma once
2
Cezary Zwolaka4e67612021-02-18 13:16:16 +01003#include "interfaces/json_storage.hpp"
Wludzik, Jozef1477fe62021-01-02 11:56:10 +01004#include "interfaces/threshold.hpp"
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01005#include "interfaces/trigger.hpp"
6#include "interfaces/trigger_manager.hpp"
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +00007#include "types/trigger_types.hpp"
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01008
9#include <boost/asio/io_context.hpp>
10#include <sdbusplus/asio/object_server.hpp>
11
12#include <memory>
13
14class Trigger : public interfaces::Trigger
15{
16 public:
Cezary Zwolak4416fce2021-03-17 03:21:06 +010017 Trigger(boost::asio::io_context& ioc,
18 const std::shared_ptr<sdbusplus::asio::object_server>& objServer,
Szymon Dompke20013012021-07-23 09:54:20 +020019 const std::string& name,
20 const std::vector<std::string>& triggerActions,
Cezary Zwolak4416fce2021-03-17 03:21:06 +010021 const std::vector<std::string>& reportNames,
22 const std::vector<LabeledSensorInfo>& LabeledSensorsInfoIn,
23 const LabeledTriggerThresholdParams& labeledThresholdParamsIn,
24 std::vector<std::shared_ptr<interfaces::Threshold>>&& thresholds,
25 interfaces::TriggerManager& triggerManager,
26 interfaces::JsonStorage& triggerStorage);
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010027
28 Trigger(const Trigger&) = delete;
29 Trigger(Trigger&&) = delete;
30 Trigger& operator=(const Trigger&) = delete;
31 Trigger& operator=(Trigger&&) = delete;
32
33 std::string getName() const override
34 {
35 return name;
36 }
37
38 std::string getPath() const override
39 {
40 return path;
41 }
42
Cezary Zwolaka4e67612021-02-18 13:16:16 +010043 bool storeConfiguration() const;
44
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010045 private:
46 const std::string name;
Szymon Dompke20013012021-07-23 09:54:20 +020047 std::vector<std::string> triggerActions;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010048 const std::string path;
Cezary Zwolaka4e67612021-02-18 13:16:16 +010049 bool persistent = false;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010050 std::vector<std::string> reportNames;
Cezary Zwolak4416fce2021-03-17 03:21:06 +010051 std::vector<LabeledSensorInfo> labeledSensorsInfo;
52 LabeledTriggerThresholdParams labeledThresholdParams;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010053 std::unique_ptr<sdbusplus::asio::dbus_interface> deleteIface;
54 std::unique_ptr<sdbusplus::asio::dbus_interface> triggerIface;
Wludzik, Jozef1477fe62021-01-02 11:56:10 +010055 std::vector<std::shared_ptr<interfaces::Threshold>> thresholds;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010056
Cezary Zwolaka4e67612021-02-18 13:16:16 +010057 interfaces::JsonStorage::FilePath fileName;
58 interfaces::JsonStorage& triggerStorage;
59
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010060 public:
61 static constexpr const char* triggerIfaceName =
62 "xyz.openbmc_project.Telemetry.Trigger";
63 static constexpr const char* triggerDir =
64 "/xyz/openbmc_project/Telemetry/Triggers/";
65 static constexpr const char* deleteIfaceName =
66 "xyz.openbmc_project.Object.Delete";
Cezary Zwolaka4e67612021-02-18 13:16:16 +010067 static constexpr size_t triggerVersion = 0;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010068};