#endif
#include "DBusProxy.h"
-#include "DBusServiceRegistry.h"
#include "DBusUtils.h"
#include <cassert>
const std::string& dbusBusName,
const std::string& dbusObjectPath,
const std::shared_ptr<DBusProxyConnection>& dbusConnection):
- DBusProxyBase(split(commonApiAddress, ':')[1],
- split(commonApiAddress, ':')[2],
- dbusInterfaceName,
- dbusBusName,
- dbusObjectPath,
- dbusConnection),
+ DBusProxyBase(dbusConnection),
+ commonApiServiceId_(split(commonApiAddress, ':')[1]),
+ commonApiParticipantId_(split(commonApiAddress, ':')[2]),
+ dbusBusName_(dbusBusName),
+ dbusObjectPath_(dbusObjectPath),
+ dbusInterfaceName_(dbusInterfaceName),
dbusProxyStatusEvent_(this),
availabilityStatus_(AvailabilityStatus::UNKNOWN),
- interfaceVersionAttribute_(*this, "getInterfaceVersion") {
+ interfaceVersionAttribute_(*this, "getInterfaceVersion", "uu"),
+ dbusServiceRegistry_(dbusConnection->getDBusServiceRegistry()) {
+
const std::string commonApiDomain = split(commonApiAddress, ':')[0];
assert(commonApiDomain == "local");
- dbusServiceStatusEventSubscription_ = dbusConnection->getDBusServiceRegistry()->getServiceStatusEvent().subscribe(
+ dbusServiceRegistrySubscription_ = dbusServiceRegistry_->subscribeAvailabilityListener(
commonApiAddress,
- std::bind(&DBusProxy::onServiceStatusEvent, this, std::placeholders::_1, std::placeholders::_2));
+ std::bind(&DBusProxy::onDBusServiceInstanceStatus, this, std::placeholders::_1));
}
DBusProxy::~DBusProxy() {
- getDBusConnection()->getDBusServiceRegistry()->getServiceStatusEvent().unsubscribe(dbusServiceStatusEventSubscription_);
+ dbusServiceRegistry_->unsubscribeAvailabilityListener(
+ getAddress(),
+ dbusServiceRegistrySubscription_);
}
bool DBusProxy::isAvailable() const {
bool DBusProxy::isAvailableBlocking() const {
if (availabilityStatus_ == AvailabilityStatus::UNKNOWN) {
- std::chrono::milliseconds singleWaitDuration(100);
+ std::chrono::milliseconds singleWaitDuration(2);
// Wait for the service registry
while (availabilityStatus_ == AvailabilityStatus::UNKNOWN) {
return interfaceVersionAttribute_;
}
-SubscriptionStatus DBusProxy::onServiceStatusEvent(const std::string& name, const AvailabilityStatus& availabilityStatus) {
+void DBusProxy::onDBusServiceInstanceStatus(const AvailabilityStatus& availabilityStatus) {
availabilityStatus_ = availabilityStatus;
-
dbusProxyStatusEvent_.notifyListeners(availabilityStatus);
+}
+
+const std::string& DBusProxy::getDBusBusName() const {
+ return dbusBusName_;
+}
+
+const std::string& DBusProxy::getDBusObjectPath() const {
+ return dbusObjectPath_;
+}
+
+const std::string& DBusProxy::getInterfaceName() const {
+ return dbusInterfaceName_;
+}
+
+const std::string& DBusProxy::getDomain() const {
+ return commonApiDomain_;
+}
+
+const std::string& DBusProxy::getServiceId() const {
+ return commonApiServiceId_;
+}
+
+const std::string& DBusProxy::getInstanceId() const {
+ return commonApiParticipantId_;
+}
- return SubscriptionStatus::RETAIN;
+std::string DBusProxy::getAddress() const {
+ return commonApiDomain_ + ":" + commonApiServiceId_ + ":" + commonApiParticipantId_;
}
} // namespace DBus