diff options
author | Matthew Barth <msbarth@us.ibm.com> | 2017-05-31 13:45:36 -0500 |
---|---|---|
committer | Matthew Barth <msbarth@us.ibm.com> | 2017-06-05 09:19:18 -0500 |
commit | 34f1bda245818e659f4af44361c81f21dba09b76 (patch) | |
tree | 8e6ed6896a672e5e5739612819b6bea776de42d2 /control/zone.cpp | |
parent | df3e8d67fd8afb78105f516eac360d0a7d44326f (diff) | |
download | phosphor-fan-presence-34f1bda245818e659f4af44361c81f21dba09b76.tar.gz phosphor-fan-presence-34f1bda245818e659f4af44361c81f21dba09b76.zip |
Use updated match methods for signal callbacks
Attach the event handler callback function to the match along with
generating the match string using the new match methods
Change-Id: I7595d65cbc615f29db60e2a65534ee5b635d6f96
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
Diffstat (limited to 'control/zone.cpp')
-rw-r--r-- | control/zone.cpp | 29 |
1 files changed, 9 insertions, 20 deletions
diff --git a/control/zone.cpp b/control/zone.cpp index 13ee977..849cd91 100644 --- a/control/zone.cpp +++ b/control/zone.cpp @@ -70,8 +70,7 @@ Zone::Zone(Mode mode, for (auto& prop : std::get<propChangeListPos>(event)) { _signalEvents.emplace_back( - std::make_unique<SignalEvent>( - this, + std::make_unique<EventData>( EventData { std::get<groupPos>(event), @@ -81,8 +80,10 @@ Zone::Zone(Mode mode, _matches.emplace_back( bus, std::get<signaturePos>(prop).c_str(), - signalHandler, - _signalEvents.back().get()); + std::bind(std::mem_fn(&Zone::handleEvent), + this, + std::placeholders::_1, + _signalEvents.back().get())); } // Run action function for initial event state std::get<actionPos>(event)(*this, @@ -142,26 +143,14 @@ void Zone::getProperty(sdbusplus::bus::bus& bus, value = sdbusplus::message::variant_ns::get<T>(property); } -int Zone::signalHandler(sd_bus_message* msg, - void* data, - sd_bus_error* err) -{ - auto sdbpMsg = sdbusplus::message::message(msg); - auto& signalEvent = *static_cast<SignalEvent*>(data); - std::get<zoneObjPos>(signalEvent)->handleEvent( - sdbpMsg, - std::get<eventDataPos>(signalEvent)); - return 0; -} - void Zone::handleEvent(sdbusplus::message::message& msg, - const EventData& eventData) + const EventData* eventData) { // Handle the callback - std::get<eventHandlerPos>(eventData)(_bus, msg, *this); + std::get<eventHandlerPos>(*eventData)(_bus, msg, *this); // Perform the action - std::get<eventActionPos>(eventData)(*this, - std::get<eventGroupPos>(eventData)); + std::get<eventActionPos>(*eventData)(*this, + std::get<eventGroupPos>(*eventData)); } } |