diff options
Diffstat (limited to 'src/CommonAPI/DBus/DBusDaemonProxy.cpp')
-rw-r--r-- | src/CommonAPI/DBus/DBusDaemonProxy.cpp | 102 |
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() { |