xref: /openbmc/openpower-vpd-parser/vpd-manager/include/listener.hpp (revision 56e4537c80d009d1d072d141b2d96f4368203a95)
1 #pragma once
2 
3 #include "worker.hpp"
4 
5 #include <sdbusplus/asio/object_server.hpp>
6 
7 #include <memory>
8 
9 namespace vpd
10 {
11 /**
12  * @brief Class to listen on events
13  *
14  * This class will be used for registering and handling events on the system.
15  */
16 class Listener
17 {
18   public:
19     /**
20      * Deleted methods for Listener
21      */
22     Listener(const Listener&) = delete;
23     Listener& operator=(const Listener&) = delete;
24     Listener& operator=(Listener&&) = delete;
25     Listener(Listener&&) = delete;
26 
27     /**
28      * @brief Constructor
29      * @param[in] i_worker - Reference to worker class object.
30      * @param[in] i_asioConnection - Dbus Connection.
31      */
32     Listener(
33         const std::shared_ptr<Worker>& i_worker,
34         const std::shared_ptr<sdbusplus::asio::connection>& i_asioConnection);
35 
36     /**
37      * @brief API to register callback for Host state change.
38      *
39      */
40     void registerHostStateChangeCallback() const noexcept;
41 
42     /**
43      * @brief API to register callback for "AssetTag" property change.
44      */
45     void registerAssetTagChangeCallback() const noexcept;
46 
47   private:
48     /**
49      * @brief API to process host state change callback.
50      *
51      * @param[in] i_msg - Callback message.
52      */
53     void hostStateChangeCallBack(sdbusplus::message_t& i_msg) const noexcept;
54 
55     /**
56      * @brief Callback API to be triggered on "AssetTag" property change.
57      *
58      * @param[in] i_msg - Callback message.
59      */
60     void assetTagChangeCallback(sdbusplus::message_t& i_msg) const noexcept;
61 
62     // Shared pointer to worker class
63     const std::shared_ptr<Worker>& m_worker;
64 
65     // Shared pointer to bus connection.
66     const std::shared_ptr<sdbusplus::asio::connection>& m_asioConnection;
67 };
68 } // namespace vpd
69