xref: /openbmc/telemetry/src/trigger.hpp (revision 1cdd7e4f89c75de7ec95ea545306e96ddf5a8a2b)
176833cb5SWludzik, Jozef #pragma once
276833cb5SWludzik, Jozef 
3a4e67616SCezary Zwolak #include "interfaces/json_storage.hpp"
41477fe6aSWludzik, Jozef #include "interfaces/threshold.hpp"
576833cb5SWludzik, Jozef #include "interfaces/trigger.hpp"
694f71c51SSzymon Dompke #include "interfaces/trigger_factory.hpp"
776833cb5SWludzik, Jozef #include "interfaces/trigger_manager.hpp"
8dcc4e193SKrzysztof Grobelny #include "types/trigger_types.hpp"
9e6d48874SKrzysztof Grobelny #include "utils/messanger.hpp"
1076833cb5SWludzik, Jozef 
1176833cb5SWludzik, Jozef #include <boost/asio/io_context.hpp>
1276833cb5SWludzik, Jozef #include <sdbusplus/asio/object_server.hpp>
13*1cdd7e4fSSzymon Dompke #include <sdbusplus/message.hpp>
1476833cb5SWludzik, Jozef 
1576833cb5SWludzik, Jozef #include <memory>
1676833cb5SWludzik, Jozef 
1776833cb5SWludzik, Jozef class Trigger : public interfaces::Trigger
1876833cb5SWludzik, Jozef {
1976833cb5SWludzik, Jozef   public:
204416fce6SCezary Zwolak     Trigger(boost::asio::io_context& ioc,
2176833cb5SWludzik, Jozef             const std::shared_ptr<sdbusplus::asio::object_server>& objServer,
22b7b7e1b6SSzymon Dompke             TriggerId&& id, const std::string& name,
2394f71c51SSzymon Dompke             const std::vector<TriggerAction>& triggerActions,
2494f71c51SSzymon Dompke             const std::shared_ptr<std::vector<std::string>> reportIds,
251477fe6aSWludzik, Jozef             std::vector<std::shared_ptr<interfaces::Threshold>>&& thresholds,
26a4e67616SCezary Zwolak             interfaces::TriggerManager& triggerManager,
2794f71c51SSzymon Dompke             interfaces::JsonStorage& triggerStorage,
28e6d48874SKrzysztof Grobelny             const interfaces::TriggerFactory& triggerFactory,
29e6d48874SKrzysztof Grobelny             Sensors sensorsIn);
3076833cb5SWludzik, Jozef 
3176833cb5SWludzik, Jozef     Trigger(const Trigger&) = delete;
3276833cb5SWludzik, Jozef     Trigger(Trigger&&) = delete;
3376833cb5SWludzik, Jozef     Trigger& operator=(const Trigger&) = delete;
3476833cb5SWludzik, Jozef     Trigger& operator=(Trigger&&) = delete;
3576833cb5SWludzik, Jozef 
getId() const36e28aa53dSSzymon Dompke     std::string getId() const override
3776833cb5SWludzik, Jozef     {
38b7b7e1b6SSzymon Dompke         return *id;
3976833cb5SWludzik, Jozef     }
4076833cb5SWludzik, Jozef 
getPath() const4176833cb5SWludzik, Jozef     std::string getPath() const override
4276833cb5SWludzik, Jozef     {
43*1cdd7e4fSSzymon Dompke         return path.str;
4476833cb5SWludzik, Jozef     }
4576833cb5SWludzik, Jozef 
46a4e67616SCezary Zwolak     bool storeConfiguration() const;
47a4e67616SCezary Zwolak 
4876833cb5SWludzik, Jozef   private:
4955824558SKrzysztof Grobelny     std::vector<LabeledSensorInfo> getLabeledSensorInfo() const;
5055824558SKrzysztof Grobelny     std::vector<LabeledThresholdParam> getLabeledThresholds() const;
5155824558SKrzysztof Grobelny     bool isDiscreate() const;
5255824558SKrzysztof Grobelny 
53b7b7e1b6SSzymon Dompke     const TriggerId id;
54*1cdd7e4fSSzymon Dompke     const sdbusplus::message::object_path path;
55e28aa53dSSzymon Dompke     std::string name;
5694f71c51SSzymon Dompke     std::vector<TriggerAction> triggerActions;
57a4e67616SCezary Zwolak     bool persistent = false;
5894f71c51SSzymon Dompke     std::shared_ptr<std::vector<std::string>> reportIds;
5976833cb5SWludzik, Jozef     std::unique_ptr<sdbusplus::asio::dbus_interface> deleteIface;
6076833cb5SWludzik, Jozef     std::unique_ptr<sdbusplus::asio::dbus_interface> triggerIface;
611477fe6aSWludzik, Jozef     std::vector<std::shared_ptr<interfaces::Threshold>> thresholds;
6276833cb5SWludzik, Jozef 
63a4e67616SCezary Zwolak     interfaces::JsonStorage::FilePath fileName;
64a4e67616SCezary Zwolak     interfaces::JsonStorage& triggerStorage;
6594f71c51SSzymon Dompke     Sensors sensors;
66e6d48874SKrzysztof Grobelny     utils::Messanger messanger;
67a4e67616SCezary Zwolak 
6876833cb5SWludzik, Jozef   public:
6976833cb5SWludzik, Jozef     static constexpr const char* triggerIfaceName =
7076833cb5SWludzik, Jozef         "xyz.openbmc_project.Telemetry.Trigger";
7176833cb5SWludzik, Jozef     static constexpr const char* deleteIfaceName =
7276833cb5SWludzik, Jozef         "xyz.openbmc_project.Object.Delete";
73b7b7e1b6SSzymon Dompke     static constexpr size_t triggerVersion = 2;
7476833cb5SWludzik, Jozef };
75