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