summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--control/fan.cpp26
-rw-r--r--control/functor.hpp7
-rw-r--r--sdbusplus.hpp15
3 files changed, 35 insertions, 13 deletions
diff --git a/control/fan.cpp b/control/fan.cpp
index d4303cf..c86186f 100644
--- a/control/fan.cpp
+++ b/control/fan.cpp
@@ -65,13 +65,25 @@ void Fan::setSpeed(uint64_t speed)
for (auto& sensor : _sensors)
{
auto value = speed;
- util::SDBusPlus::setProperty<uint64_t>(
- _bus,
- sensor.second,
- sensor.first,
- _interface,
- FAN_TARGET_PROPERTY,
- std::move(value));
+ try
+ {
+ util::SDBusPlus::setProperty<uint64_t>(
+ _bus,
+ sensor.second,
+ sensor.first,
+ _interface,
+ FAN_TARGET_PROPERTY,
+ std::move(value));
+ }
+ catch (const sdbusplus::exception::SdBusError&)
+ {
+ throw util::DBusPropertyError{
+ "DBus set property failed",
+ sensor.second,
+ sensor.first,
+ _interface,
+ FAN_TARGET_PROPERTY};
+ }
}
_targetSpeed = speed;
diff --git a/control/functor.hpp b/control/functor.hpp
index 17ae3af..e86bae7 100644
--- a/control/functor.hpp
+++ b/control/functor.hpp
@@ -113,7 +113,12 @@ struct PropertyChanged
_property);
_handler(zone, std::forward<T>(val));
}
- catch (const util::DBusError& e)
+ catch (const sdbusplus::exception::SdBusError&)
+ {
+ // Property will not be used unless a property changed
+ // signal message is received for this property.
+ }
+ catch (const util::DBusError&)
{
// Property will not be used unless a property changed
// signal message is received for this property.
diff --git a/sdbusplus.hpp b/sdbusplus.hpp
index 3a6cd65..41c7fe2 100644
--- a/sdbusplus.hpp
+++ b/sdbusplus.hpp
@@ -149,14 +149,19 @@ class SDBusPlus
interface.c_str(),
method.c_str());
reqMsg.append(std::forward<Args>(args)...);
- auto respMsg = bus.call(reqMsg);
-
- if (respMsg.is_method_error())
+ try
+ {
+ auto respMsg = bus.call(reqMsg);
+ if (respMsg.is_method_error())
+ {
+ throw DBusMethodError{busName, path, interface, method};
+ }
+ return respMsg;
+ }
+ catch (const sdbusplus::exception::SdBusError&)
{
throw DBusMethodError{busName, path, interface, method};
}
-
- return respMsg;
}
/** @brief Invoke a method. */
OpenPOWER on IntegriCloud