diff options
author | Jürgen Gehring <juergen.gehring@bmw.de> | 2015-06-01 07:57:07 -0700 |
---|---|---|
committer | Jürgen Gehring <juergen.gehring@bmw.de> | 2015-06-01 07:57:07 -0700 |
commit | 54982071a99484488207ad3bd5e9391a15bffe02 (patch) | |
tree | 479c178ee629947cf0df65fc0e38f986f6ccdbc9 /include/CommonAPI/DBus/DBusProxy.hpp | |
parent | 45a6f65628a142bb8d37a3b72cb210b1f8c24a5f (diff) | |
download | genivi-common-api-dbus-runtime-54982071a99484488207ad3bd5e9391a15bffe02.tar.gz |
CommonAPI-D-Bus 3.1.13.1.1
Diffstat (limited to 'include/CommonAPI/DBus/DBusProxy.hpp')
-rw-r--r-- | include/CommonAPI/DBus/DBusProxy.hpp | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/include/CommonAPI/DBus/DBusProxy.hpp b/include/CommonAPI/DBus/DBusProxy.hpp new file mode 100644 index 0000000..af40863 --- /dev/null +++ b/include/CommonAPI/DBus/DBusProxy.hpp @@ -0,0 +1,84 @@ +// Copyright (C) 2014-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/. + +#if !defined (COMMONAPI_INTERNAL_COMPILATION) +#error "Only <CommonAPI/CommonAPI.hpp> can be included directly, this file may disappear or change contents." +#endif + +#ifndef COMMONAPI_DBUS_DBUSPROXY_HPP_ +#define COMMONAPI_DBUS_DBUSPROXY_HPP_ + +#include <functional> +#include <memory> +#include <string> + +#include <CommonAPI/Export.hpp> +#include <CommonAPI/DBus/DBusAttribute.hpp> +#include <CommonAPI/DBus/DBusServiceRegistry.hpp> + +namespace CommonAPI { +namespace DBus { + +class DBusProxyStatusEvent + : public ProxyStatusEvent { + friend class DBusProxy; + + public: + DBusProxyStatusEvent(DBusProxy* dbusProxy); + virtual ~DBusProxyStatusEvent() {} + + protected: + virtual void onListenerAdded(const Listener& listener); + + DBusProxy* dbusProxy_; +}; + + +class DBusProxy + : public DBusProxyBase { +public: + COMMONAPI_EXPORT DBusProxy(const DBusAddress &_address, + const std::shared_ptr<DBusProxyConnection> &_connection); + COMMONAPI_EXPORT virtual ~DBusProxy(); + + COMMONAPI_EXPORT virtual ProxyStatusEvent& getProxyStatusEvent(); + COMMONAPI_EXPORT virtual InterfaceVersionAttribute& getInterfaceVersionAttribute(); + + COMMONAPI_EXPORT virtual bool isAvailable() const; + COMMONAPI_EXPORT virtual bool isAvailableBlocking() const; + + COMMONAPI_EXPORT DBusProxyConnection::DBusSignalHandlerToken subscribeForSelectiveBroadcastOnConnection( + bool& subscriptionAccepted, + const std::string& objectPath, + const std::string& interfaceName, + const std::string& interfaceMemberName, + const std::string& interfaceMemberSignature, + DBusProxyConnection::DBusSignalHandler* dbusSignalHandler); + COMMONAPI_EXPORT void unsubscribeFromSelectiveBroadcast(const std::string& eventName, + DBusProxyConnection::DBusSignalHandlerToken subscription, + const DBusProxyConnection::DBusSignalHandler* dbusSignalHandler); + + COMMONAPI_EXPORT void init(); + +private: + COMMONAPI_EXPORT DBusProxy(const DBusProxy &) = delete; + + COMMONAPI_EXPORT void onDBusServiceInstanceStatus(const AvailabilityStatus& availabilityStatus); + + DBusProxyStatusEvent dbusProxyStatusEvent_; + DBusServiceRegistry::DBusServiceSubscription dbusServiceRegistrySubscription_; + AvailabilityStatus availabilityStatus_; + + DBusReadonlyAttribute<InterfaceVersionAttribute> interfaceVersionAttribute_; + + std::shared_ptr<DBusServiceRegistry> dbusServiceRegistry_; +}; + + +} // namespace DBus +} // namespace CommonAPI + +#endif // COMMONAPI_DBUS_DBUSPROXY_HPP_ + |