diff options
author | Patrick Williams <patrick@stwcx.xyz> | 2017-05-05 15:47:39 -0500 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2017-05-11 03:28:41 +0000 |
commit | 8f8ba39f4e8aac93b18d5893b4da696c7d4c76d3 (patch) | |
tree | 12b00a99f0d462fdd64f01c9d92c827fa08953f2 | |
parent | 39b537b1e06ea4796811a9e0154fc8a043dd45b2 (diff) | |
download | phosphor-state-manager-8f8ba39f4e8aac93b18d5893b4da696c7d4c76d3.tar.gz phosphor-state-manager-8f8ba39f4e8aac93b18d5893b4da696c7d4c76d3.zip |
chassis: use latest sdbusplus match APIs
Change-Id: I1be75ab5af362d683be76afb47d8c411f0f4a4b2
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
-rw-r--r-- | chassis_state_manager.cpp | 12 | ||||
-rw-r--r-- | chassis_state_manager.hpp | 44 |
2 files changed, 18 insertions, 38 deletions
diff --git a/chassis_state_manager.cpp b/chassis_state_manager.cpp index 13abbb9..e1a2e0f 100644 --- a/chassis_state_manager.cpp +++ b/chassis_state_manager.cpp @@ -149,23 +149,15 @@ bool Chassis::stateActive(const std::string& target) } -int Chassis::sysStateChangeSignal(sd_bus_message *msg, void *userData, - sd_bus_error *retError) -{ - return static_cast<Chassis*>(userData)->sysStateChange(msg, retError); -} - -int Chassis::sysStateChange(sd_bus_message* msg, - sd_bus_error* retError) +int Chassis::sysStateChange(sdbusplus::message::message& msg) { uint32_t newStateID {}; sdbusplus::message::object_path newStateObjPath; std::string newStateUnit{}; std::string newStateResult{}; - auto sdPlusMsg = sdbusplus::message::message(msg); //Read the msg and populate each variable - sdPlusMsg.read(newStateID, newStateObjPath, newStateUnit, newStateResult); + msg.read(newStateID, newStateObjPath, newStateUnit, newStateResult); if((newStateUnit == CHASSIS_STATE_POWEROFF_TGT) && (newStateResult == "done") && diff --git a/chassis_state_manager.hpp b/chassis_state_manager.hpp index 0c6d5a1..132e30e 100644 --- a/chassis_state_manager.hpp +++ b/chassis_state_manager.hpp @@ -1,5 +1,6 @@ #pragma once +#include <functional> #include <sdbusplus/bus.hpp> #include "xyz/openbmc_project/State/Chassis/server.hpp" @@ -10,13 +11,16 @@ namespace state namespace manager { +using ChassisInherit = sdbusplus::server::object::object< + sdbusplus::xyz::openbmc_project::State::server::Chassis>; +namespace sdbusRule = sdbusplus::bus::match::rules; + /** @class Chassis * @brief OpenBMC chassis state management implementation. * @details A concrete implementation for xyz.openbmc_project.State.Chassis * DBus API. */ -class Chassis : public sdbusplus::server::object::object< - sdbusplus::xyz::openbmc_project::State::server::Chassis> +class Chassis : public ChassisInherit { public: /** @brief Constructs Chassis State Manager @@ -32,17 +36,16 @@ class Chassis : public sdbusplus::server::object::object< Chassis(sdbusplus::bus::bus& bus, const char* busName, const char* objPath) : - sdbusplus::server::object::object< - sdbusplus::xyz::openbmc_project::State::server::Chassis>( - bus, objPath, true), + ChassisInherit(bus, objPath, true), bus(bus), systemdSignals(bus, - "type='signal'," - "member='JobRemoved'," - "path='/org/freedesktop/systemd1'," - "interface='org.freedesktop.systemd1.Manager'", - sysStateChangeSignal, - this) + sdbusRule::type::signal() + + sdbusRule::member("JobRemoved") + + sdbusRule::path("/org/freedesktop/systemd1") + + sdbusRule::interface( + "org.freedesktop.systemd1.Manager"), + std::bind(std::mem_fn(&Chassis::sysStateChange), + this, std::placeholders::_1)) { subscribeToSystemdSignals(); @@ -92,36 +95,21 @@ class Chassis : public sdbusplus::server::object::object< **/ bool stateActive(const std::string& target); - /** @brief Callback function on systemd state changes - * - * Will just do a call into the appropriate object for processing - * - * @param[in] msg - Data associated with subscribed signal - * @param[in] userData - Pointer to this object instance - * @param[out] retError - Not used but required with signal API - * - */ - static int sysStateChangeSignal(sd_bus_message* msg, - void* userData, - sd_bus_error* retError); - /** @brief Check if systemd state change is relevant to this object * * Instance specific interface to handle the detected systemd state * change * * @param[in] msg - Data associated with subscribed signal - * @param[out] retError - Not used but required with signal API * */ - int sysStateChange(sd_bus_message* msg, - sd_bus_error* retError); + int sysStateChange(sdbusplus::message::message& msg); /** @brief Persistent sdbusplus DBus connection. */ sdbusplus::bus::bus& bus; /** @brief Used to subscribe to dbus systemd signals **/ - sdbusplus::server::match::match systemdSignals; + sdbusplus::bus::match_t systemdSignals; }; } // namespace manager |