xref: /openbmc/telemetry/src/trigger.hpp (revision 94f71c5190b64bb47aa34cdce4eb4cca71d36faa)
1 #pragma once
2 
3 #include "interfaces/json_storage.hpp"
4 #include "interfaces/threshold.hpp"
5 #include "interfaces/trigger.hpp"
6 #include "interfaces/trigger_factory.hpp"
7 #include "interfaces/trigger_manager.hpp"
8 #include "types/trigger_types.hpp"
9 
10 #include <boost/asio/io_context.hpp>
11 #include <sdbusplus/asio/object_server.hpp>
12 
13 #include <memory>
14 
15 class Trigger : public interfaces::Trigger
16 {
17   public:
18     Trigger(boost::asio::io_context& ioc,
19             const std::shared_ptr<sdbusplus::asio::object_server>& objServer,
20             const std::string& id, const std::string& name,
21             const std::vector<TriggerAction>& triggerActions,
22             const std::shared_ptr<std::vector<std::string>> reportIds,
23             std::vector<std::shared_ptr<interfaces::Threshold>>&& thresholds,
24             interfaces::TriggerManager& triggerManager,
25             interfaces::JsonStorage& triggerStorage,
26             const interfaces::TriggerFactory& triggerFactory,
27             Sensors sensorsIn);
28 
29     Trigger(const Trigger&) = delete;
30     Trigger(Trigger&&) = delete;
31     Trigger& operator=(const Trigger&) = delete;
32     Trigger& operator=(Trigger&&) = delete;
33 
34     std::string getId() const override
35     {
36         return id;
37     }
38 
39     std::string getPath() const override
40     {
41         return path;
42     }
43 
44     bool storeConfiguration() const;
45 
46   private:
47     std::string id;
48     std::string name;
49     std::vector<TriggerAction> triggerActions;
50     std::string path;
51     bool persistent = false;
52     std::shared_ptr<std::vector<std::string>> reportIds;
53     std::unique_ptr<sdbusplus::asio::dbus_interface> deleteIface;
54     std::unique_ptr<sdbusplus::asio::dbus_interface> triggerIface;
55     std::vector<std::shared_ptr<interfaces::Threshold>> thresholds;
56 
57     interfaces::JsonStorage::FilePath fileName;
58     interfaces::JsonStorage& triggerStorage;
59     Sensors sensors;
60 
61   public:
62     static constexpr const char* triggerIfaceName =
63         "xyz.openbmc_project.Telemetry.Trigger";
64     static constexpr const char* triggerDir =
65         "/xyz/openbmc_project/Telemetry/Triggers/";
66     static constexpr const char* deleteIfaceName =
67         "xyz.openbmc_project.Object.Delete";
68     static constexpr size_t triggerVersion = 1;
69 };
70