summaryrefslogtreecommitdiff
path: root/src/CommonAPI/DBus/DBusProxy.cpp
diff options
context:
space:
mode:
authorJürgen Gehring <juergen.gehring@bmw.de>2015-06-17 05:12:07 -0700
committerJürgen Gehring <juergen.gehring@bmw.de>2015-06-17 05:12:07 -0700
commit49d0b428ca19852d49965f35328a314f22d88807 (patch)
tree4b8d945f29cac4b4b599f79a872cc5029288f5c5 /src/CommonAPI/DBus/DBusProxy.cpp
parent54982071a99484488207ad3bd5e9391a15bffe02 (diff)
downloadgenivi-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.cpp14
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(