diff options
author | Jürgen Gehring <juergen.gehring@bmw.de> | 2015-06-17 05:12:07 -0700 |
---|---|---|
committer | Jürgen Gehring <juergen.gehring@bmw.de> | 2015-06-17 05:12:07 -0700 |
commit | 49d0b428ca19852d49965f35328a314f22d88807 (patch) | |
tree | 4b8d945f29cac4b4b599f79a872cc5029288f5c5 /src/CommonAPI/DBus/DBusProxy.cpp | |
parent | 54982071a99484488207ad3bd5e9391a15bffe02 (diff) | |
download | genivi-common-api-dbus-runtime-49d0b428ca19852d49965f35328a314f22d88807.tar.gz |
CommonAPI 3.1.23.1.2
Diffstat (limited to 'src/CommonAPI/DBus/DBusProxy.cpp')
-rw-r--r-- | src/CommonAPI/DBus/DBusProxy.cpp | 14 |
1 files changed, 6 insertions, 8 deletions
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<std::mutex> 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( |