diff options
Diffstat (limited to 'src/CommonAPI/DBus/DBusDaemonProxy.cpp')
-rw-r--r-- | src/CommonAPI/DBus/DBusDaemonProxy.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/CommonAPI/DBus/DBusDaemonProxy.cpp b/src/CommonAPI/DBus/DBusDaemonProxy.cpp index 1c804ee..24d4d16 100644 --- a/src/CommonAPI/DBus/DBusDaemonProxy.cpp +++ b/src/CommonAPI/DBus/DBusDaemonProxy.cpp @@ -42,6 +42,10 @@ DBusDaemonProxy::DBusDaemonProxy(const std::shared_ptr<DBusProxyConnection>& dbu nameOwnerChangedEvent_(*this, "NameOwnerChanged", "sss") { } +void DBusDaemonProxy::init() { + +} + std::string DBusDaemonProxy::getAddress() const { return getDomain() + ":" + getServiceId() + ":" + getInstanceId(); } @@ -69,6 +73,10 @@ bool DBusDaemonProxy::isAvailable() const { return getDBusConnection()->isConnected(); } +bool DBusDaemonProxy::isAvailableBlocking() const { + return isAvailable(); +} + ProxyStatusEvent& DBusDaemonProxy::getProxyStatusEvent() { return getDBusConnection()->getConnectionStatusEvent(); } @@ -173,6 +181,24 @@ std::future<CallStatus> DBusDaemonProxy::getManagedObjectsAsync(const std::strin 2000); } +std::future<CallStatus> DBusDaemonProxy::getNameOwnerAsync(const std::string& busName, GetNameOwnerAsyncCallback getNameOwnerAsyncCallback) const { + DBusMessage dbusMessage = createMethodCall("GetNameOwner", "s"); + + DBusOutputStream outputStream(dbusMessage); + const bool success = DBusSerializableArguments<std::string>::serialize(outputStream, busName); + if (!success) { + std::promise<CallStatus> promise; + promise.set_value(CallStatus::OUT_OF_MEMORY); + return promise.get_future(); + } + outputStream.flush(); + + return getDBusConnection()->sendDBusMessageWithReplyAsync( + dbusMessage, + DBusProxyAsyncCallbackHandler<std::string>::create(getNameOwnerAsyncCallback), + 2000); +} + } // namespace DBus } // namespace CommonAPI |