blob: 67c6a7f3354632c900f608b452d4c0933984a440 [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"
Szymon Dompkeb4ef22e2022-02-07 15:15:12 +01004#include "interfaces/report_manager.hpp"
Wludzik, Jozef1477fe62021-01-02 11:56:10 +01005#include "interfaces/threshold.hpp"
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01006#include "interfaces/trigger.hpp"
Szymon Dompke94f71c52021-12-10 07:16:33 +01007#include "interfaces/trigger_factory.hpp"
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01008#include "interfaces/trigger_manager.hpp"
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +00009#include "types/trigger_types.hpp"
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010010
11#include <boost/asio/io_context.hpp>
12#include <sdbusplus/asio/object_server.hpp>
13
14#include <memory>
15
16class Trigger : public interfaces::Trigger
17{
18 public:
Cezary Zwolak4416fce2021-03-17 03:21:06 +010019 Trigger(boost::asio::io_context& ioc,
20 const std::shared_ptr<sdbusplus::asio::object_server>& objServer,
Szymon Dompkee28aa532021-10-27 12:33:12 +020021 const std::string& id, const std::string& name,
Szymon Dompke94f71c52021-12-10 07:16:33 +010022 const std::vector<TriggerAction>& triggerActions,
23 const std::shared_ptr<std::vector<std::string>> reportIds,
Cezary Zwolak4416fce2021-03-17 03:21:06 +010024 std::vector<std::shared_ptr<interfaces::Threshold>>&& thresholds,
25 interfaces::TriggerManager& triggerManager,
Szymon Dompke94f71c52021-12-10 07:16:33 +010026 interfaces::JsonStorage& triggerStorage,
Szymon Dompkeb4ef22e2022-02-07 15:15:12 +010027 const interfaces::TriggerFactory& triggerFactory, Sensors sensorsIn,
28 interfaces::ReportManager& reportManager);
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010029
30 Trigger(const Trigger&) = delete;
31 Trigger(Trigger&&) = delete;
32 Trigger& operator=(const Trigger&) = delete;
33 Trigger& operator=(Trigger&&) = delete;
34
Szymon Dompkee28aa532021-10-27 12:33:12 +020035 std::string getId() const override
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010036 {
Szymon Dompkee28aa532021-10-27 12:33:12 +020037 return id;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010038 }
39
40 std::string getPath() const override
41 {
42 return path;
43 }
44
Cezary Zwolaka4e67612021-02-18 13:16:16 +010045 bool storeConfiguration() const;
46
Szymon Dompkeb4ef22e2022-02-07 15:15:12 +010047 const std::vector<std::string>& getReportIds() const override
48 {
49 return *reportIds;
50 }
51
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010052 private:
Szymon Dompkee28aa532021-10-27 12:33:12 +020053 std::string id;
54 std::string name;
Szymon Dompke94f71c52021-12-10 07:16:33 +010055 std::vector<TriggerAction> triggerActions;
Szymon Dompkee28aa532021-10-27 12:33:12 +020056 std::string path;
Cezary Zwolaka4e67612021-02-18 13:16:16 +010057 bool persistent = false;
Szymon Dompke94f71c52021-12-10 07:16:33 +010058 std::shared_ptr<std::vector<std::string>> reportIds;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010059 std::unique_ptr<sdbusplus::asio::dbus_interface> deleteIface;
60 std::unique_ptr<sdbusplus::asio::dbus_interface> triggerIface;
Wludzik, Jozef1477fe62021-01-02 11:56:10 +010061 std::vector<std::shared_ptr<interfaces::Threshold>> thresholds;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010062
Cezary Zwolaka4e67612021-02-18 13:16:16 +010063 interfaces::JsonStorage::FilePath fileName;
64 interfaces::JsonStorage& triggerStorage;
Szymon Dompke94f71c52021-12-10 07:16:33 +010065 Sensors sensors;
Szymon Dompkeb4ef22e2022-02-07 15:15:12 +010066 interfaces::ReportManager& reportManager;
67
68 void
69 updateTriggerIdsInReports(const std::vector<std::string>& newReportIds);
Cezary Zwolaka4e67612021-02-18 13:16:16 +010070
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010071 public:
72 static constexpr const char* triggerIfaceName =
73 "xyz.openbmc_project.Telemetry.Trigger";
74 static constexpr const char* triggerDir =
75 "/xyz/openbmc_project/Telemetry/Triggers/";
76 static constexpr const char* deleteIfaceName =
77 "xyz.openbmc_project.Object.Delete";
Szymon Dompke94f71c52021-12-10 07:16:33 +010078 static constexpr size_t triggerVersion = 1;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010079};