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