summaryrefslogtreecommitdiff
path: root/src/CommonAPI/DBus/DBusProxyBase.cpp
blob: 56d5717285df17f786fcf7eb8060837cd135dc8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
// 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/DBus/DBusAddress.hpp>
#include <CommonAPI/DBus/DBusAddressTranslator.hpp>
#include <CommonAPI/DBus/DBusProxyBase.hpp>
#include <CommonAPI/DBus/DBusMessage.hpp>

namespace CommonAPI {
namespace DBus {

DBusProxyBase::DBusProxyBase(
	const DBusAddress &_dbusAddress,
	const std::shared_ptr<DBusProxyConnection> &_connection)
	: dbusAddress_(_dbusAddress),
	  connection_(_connection) {
	DBusAddressTranslator::get()->translate(dbusAddress_, address_);
}

DBusMessage
DBusProxyBase::createMethodCall(const std::string &_method, const std::string &_signature) const {
    return DBusMessage::createMethodCall(getDBusAddress(), _method, _signature);
}


const DBusAddress &
DBusProxyBase::getDBusAddress() const {
	return dbusAddress_;
}

const std::shared_ptr<DBusProxyConnection> &
DBusProxyBase::getDBusConnection() const {
    return connection_;
}

DBusProxyConnection::DBusSignalHandlerToken DBusProxyBase::addSignalMemberHandler(
        const std::string& signalName,
        const std::string& signalSignature,
        DBusProxyConnection::DBusSignalHandler* dbusSignalHandler,
        const bool justAddFilter) {
    return addSignalMemberHandler(
    		getDBusAddress().getObjectPath(),
    		getDBusAddress().getInterface(),
            signalName,
            signalSignature,
            dbusSignalHandler,
            justAddFilter);
}

DBusProxyConnection::DBusSignalHandlerToken DBusProxyBase::addSignalMemberHandler(
                const std::string& objectPath,
                const std::string& interfaceName,
                const std::string& signalName,
                const std::string& signalSignature,
                DBusProxyConnection::DBusSignalHandler* dbusSignalHandler,
                const bool justAddFilter) {
    return connection_->addSignalMemberHandler(
                objectPath,
                interfaceName,
                signalName,
                signalSignature,
                dbusSignalHandler,
                justAddFilter);
}

bool DBusProxyBase::removeSignalMemberHandler(const DBusProxyConnection::DBusSignalHandlerToken& dbusSignalHandlerToken, const DBusProxyConnection::DBusSignalHandler* dbusSignalHandler) {
    return connection_->removeSignalMemberHandler(dbusSignalHandlerToken, dbusSignalHandler);
}

} // namespace DBus
} // namespace CommonAPI