From 49d0b428ca19852d49965f35328a314f22d88807 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Gehring?= Date: Wed, 17 Jun 2015 05:12:07 -0700 Subject: CommonAPI 3.1.2 --- src/CommonAPI/DBus/DBusProxy.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'src/CommonAPI/DBus/DBusProxy.cpp') diff --git a/src/CommonAPI/DBus/DBusProxy.cpp b/src/CommonAPI/DBus/DBusProxy.cpp index a28abff..47336f7 100644 --- a/src/CommonAPI/DBus/DBusProxy.cpp +++ b/src/CommonAPI/DBus/DBusProxy.cpp @@ -49,16 +49,13 @@ bool DBusProxy::isAvailable() const { } bool DBusProxy::isAvailableBlocking() const { - if (availabilityStatus_ == AvailabilityStatus::UNKNOWN) { - std::chrono::milliseconds singleWaitDuration(2); + std::unique_lock lock(availabilityMutex_); - // Wait for the service registry - while (availabilityStatus_ == AvailabilityStatus::UNKNOWN) { - std::this_thread::sleep_for(singleWaitDuration); - } - } + while (availabilityStatus_ != AvailabilityStatus::AVAILABLE) { + availabilityCondition_.wait(lock); + } - return isAvailable(); + return true; } ProxyStatusEvent& DBusProxy::getProxyStatusEvent() { @@ -72,6 +69,7 @@ InterfaceVersionAttribute& DBusProxy::getInterfaceVersionAttribute() { void DBusProxy::onDBusServiceInstanceStatus(const AvailabilityStatus& availabilityStatus) { availabilityStatus_ = availabilityStatus; dbusProxyStatusEvent_.notifyListeners(availabilityStatus); + availabilityCondition_.notify_one(); } DBusProxyConnection::DBusSignalHandlerToken DBusProxy::subscribeForSelectiveBroadcastOnConnection( -- cgit v1.2.1