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