summaryrefslogtreecommitdiff
path: root/src/CommonAPI/DBus/DBusDaemonProxy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/CommonAPI/DBus/DBusDaemonProxy.cpp')
-rw-r--r--src/CommonAPI/DBus/DBusDaemonProxy.cpp102
1 files changed, 40 insertions, 62 deletions
diff --git a/src/CommonAPI/DBus/DBusDaemonProxy.cpp b/src/CommonAPI/DBus/DBusDaemonProxy.cpp
index e6ed98c..489f06b 100644
--- a/src/CommonAPI/DBus/DBusDaemonProxy.cpp
+++ b/src/CommonAPI/DBus/DBusDaemonProxy.cpp
@@ -1,12 +1,12 @@
-/* Copyright (C) 2013 BMW Group
- * Author: Manfred Bathelt (manfred.bathelt@bmw.de)
- * Author: Juergen Gehring (juergen.gehring@bmw.de)
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-#include "DBusDaemonProxy.h"
-#include "DBusProxyHelper.h"
+// Copyright (C) 2013-2015 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <CommonAPI/Address.hpp>
+#include <CommonAPI/DBus/DBusAddress.hpp>
+#include <CommonAPI/DBus/DBusDaemonProxy.hpp>
+#include <CommonAPI/DBus/DBusProxyHelper.hpp>
namespace CommonAPI {
namespace DBus {
@@ -15,12 +15,14 @@ StaticInterfaceVersionAttribute::StaticInterfaceVersionAttribute(const uint32_t&
version_(majorValue, minorValue) {
}
-void StaticInterfaceVersionAttribute::getValue(CallStatus& callStatus, Version& version) const {
- version = version_;
- callStatus = CallStatus::SUCCESS;
+void StaticInterfaceVersionAttribute::getValue(CallStatus &_status, Version &_version,
+ const CommonAPI::CallInfo *_info) const {
+ _version = version_;
+ _status = CallStatus::SUCCESS;
}
-std::future<CallStatus> StaticInterfaceVersionAttribute::getValueAsync(AttributeAsyncCallback attributeAsyncCallback) {
+std::future<CallStatus> StaticInterfaceVersionAttribute::getValueAsync(AttributeAsyncCallback attributeAsyncCallback,
+ const CommonAPI::CallInfo *_info) {
attributeAsyncCallback(CallStatus::SUCCESS, version_);
std::promise<CallStatus> versionPromise;
@@ -29,44 +31,22 @@ std::future<CallStatus> StaticInterfaceVersionAttribute::getValueAsync(Attribute
return versionPromise.get_future();
}
-
-static const std::string dbusDaemonBusName_ = "org.freedesktop.DBus";
-static const std::string dbusDaemonObjectPath_ = "/org/freedesktop/DBus";
-static const std::string dbusDaemonInterfaceName_ = DBusDaemonProxy::getInterfaceId();
-static const std::string commonApiParticipantId_ = "org.freedesktop.DBus-/org/freedesktop/DBus";
-
+//static const char *DAEMON_COMMONAPI_ADDRESS = "org.freedesktop.DBus-/org/freedesktop/DBus";
+static const char *DAEMON_DBUS_INTERFACE = DBusDaemonProxy::getInterfaceId();
+static const char *DAEMON_DBUS_OBJECT_PATH = "/org/freedesktop/DBus";
+static const char *DAEMON_DBUS_BUS = "org.freedesktop.DBus";
+static DBusAddress dbusProxyAddress(DAEMON_DBUS_INTERFACE, DAEMON_DBUS_OBJECT_PATH, DAEMON_DBUS_BUS);
+static CommonAPI::CallInfo daemonProxyInfo(2000);
DBusDaemonProxy::DBusDaemonProxy(const std::shared_ptr<DBusProxyConnection>& dbusConnection):
- DBusProxyBase(dbusConnection),
- nameOwnerChangedEvent_(*this, "NameOwnerChanged", "sss"),
+ DBusProxyBase(dbusProxyAddress, dbusConnection),
+ nameOwnerChangedEvent_(*this,
+ "NameOwnerChanged", "sss",
+ std::tuple<std::string, std::string, std::string>()),
interfaceVersionAttribute_(1, 0) {
}
void DBusDaemonProxy::init() {
-
-}
-
-std::string DBusDaemonProxy::getAddress() const {
- return getDomain() + ":" + getServiceId() + ":" + getInstanceId();
-}
-const std::string& DBusDaemonProxy::getDomain() const {
- return commonApiDomain_;
-}
-const std::string& DBusDaemonProxy::getServiceId() const {
- return dbusDaemonInterfaceName_;
-}
-const std::string& DBusDaemonProxy::getInstanceId() const {
- return commonApiParticipantId_;
-}
-
-const std::string& DBusDaemonProxy::getDBusBusName() const {
- return dbusDaemonBusName_;
-}
-const std::string& DBusDaemonProxy::getDBusObjectPath() const {
- return dbusDaemonObjectPath_;
-}
-const std::string& DBusDaemonProxy::getInterfaceName() const {
- return dbusDaemonInterfaceName_;
}
bool DBusDaemonProxy::isAvailable() const {
@@ -93,7 +73,8 @@ void DBusDaemonProxy::listNames(CommonAPI::CallStatus& callStatus, std::vector<s
DBusMessage dbusMethodCall = createMethodCall("ListNames", "");
DBusError dbusError;
- DBusMessage dbusMessageReply = getDBusConnection()->sendDBusMessageWithReplyAndBlock(dbusMethodCall, dbusError);
+ DBusMessage dbusMessageReply
+ = getDBusConnection()->sendDBusMessageWithReplyAndBlock(dbusMethodCall, dbusError, &daemonProxyInfo);
if (dbusError || !dbusMessageReply.isMethodReturnType()) {
callStatus = CallStatus::REMOTE_ERROR;
@@ -112,11 +93,10 @@ void DBusDaemonProxy::listNames(CommonAPI::CallStatus& callStatus, std::vector<s
std::future<CallStatus> DBusDaemonProxy::listNamesAsync(ListNamesAsyncCallback listNamesAsyncCallback) const {
DBusMessage dbusMessage = createMethodCall("ListNames", "");
-
return getDBusConnection()->sendDBusMessageWithReplyAsync(
dbusMessage,
- DBusProxyAsyncCallbackHandler<std::vector<std::string>>::create(listNamesAsyncCallback),
- 2000);
+ DBusProxyAsyncCallbackHandler<std::vector<std::string>>::create(listNamesAsyncCallback, std::tuple<std::vector<std::string>>()),
+ &daemonProxyInfo);
}
void DBusDaemonProxy::nameHasOwner(const std::string& busName, CommonAPI::CallStatus& callStatus, bool& hasOwner) const {
@@ -133,7 +113,8 @@ void DBusDaemonProxy::nameHasOwner(const std::string& busName, CommonAPI::CallSt
DBusError dbusError;
DBusMessage dbusMessageReply = getDBusConnection()->sendDBusMessageWithReplyAndBlock(
dbusMethodCall,
- dbusError);
+ dbusError,
+ &daemonProxyInfo);
if (dbusError || !dbusMessageReply.isMethodReturnType()) {
callStatus = CallStatus::REMOTE_ERROR;
return;
@@ -162,23 +143,20 @@ std::future<CallStatus> DBusDaemonProxy::nameHasOwnerAsync(const std::string& bu
return getDBusConnection()->sendDBusMessageWithReplyAsync(
dbusMessage,
- DBusProxyAsyncCallbackHandler<bool>::create(nameHasOwnerAsyncCallback),
- 2000);
+ DBusProxyAsyncCallbackHandler<bool>::create(nameHasOwnerAsyncCallback, std::tuple<bool>()),
+ &daemonProxyInfo);
}
std::future<CallStatus> DBusDaemonProxy::getManagedObjectsAsync(const std::string& forDBusServiceName, GetManagedObjectsAsyncCallback callback) const {
- // resolve remote objects
- auto dbusMethodCallMessage = DBusMessage::createMethodCall(
- forDBusServiceName,
- "/",
- "org.freedesktop.DBus.ObjectManager",
- "GetManagedObjects",
- "");
+ static DBusAddress address(forDBusServiceName, "/", "org.freedesktop.DBus.ObjectManager");
+ auto dbusMethodCallMessage = DBusMessage::createMethodCall(address, "GetManagedObjects", "");
return getDBusConnection()->sendDBusMessageWithReplyAsync(
dbusMethodCallMessage,
- DBusProxyAsyncCallbackHandler<DBusObjectToInterfaceDict>::create(callback),
- 2000);
+ DBusProxyAsyncCallbackHandler<DBusObjectToInterfaceDict>::create(
+ callback, std::tuple<DBusObjectToInterfaceDict>()
+ ),
+ &daemonProxyInfo);
}
std::future<CallStatus> DBusDaemonProxy::getNameOwnerAsync(const std::string& busName, GetNameOwnerAsyncCallback getNameOwnerAsyncCallback) const {
@@ -195,8 +173,8 @@ std::future<CallStatus> DBusDaemonProxy::getNameOwnerAsync(const std::string& bu
return getDBusConnection()->sendDBusMessageWithReplyAsync(
dbusMessage,
- DBusProxyAsyncCallbackHandler<std::string>::create(getNameOwnerAsyncCallback),
- 2000);
+ DBusProxyAsyncCallbackHandler<std::string>::create(getNameOwnerAsyncCallback, std::tuple<std::string>()),
+ &daemonProxyInfo);
}
const char* DBusDaemonProxy::getInterfaceId() {