Added support for selective broadcasts
[profile/ivi/common-api-dbus-runtime.git] / src / CommonAPI / DBus / DBusProxyConnection.h
index f47c700..bce9e37 100644 (file)
@@ -4,6 +4,11 @@
  * 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.h> can be included directly, this file may disappear or change contents."
+#endif
+
 #ifndef COMMONAPI_DBUS_DBUS_PROXY_CONNECTION_H_
 #define COMMONAPI_DBUS_DBUS_PROXY_CONNECTION_H_
 
@@ -35,6 +40,7 @@ typedef std::function<void(const DBusMessage&)> DBusMessageHandler;
 class DBusDaemonProxy;
 class DBusServiceRegistry;
 class DBusObjectManager;
+class DBusProxy;
 
 
 class DBusProxyConnection {
@@ -85,19 +91,31 @@ class DBusProxyConnection {
             const std::string& interfaceName,
             const std::string& interfaceMemberName,
             const std::string& interfaceMemberSignature,
-            DBusSignalHandler* dbusSignalHandler) = 0;
-
-    virtual void removeSignalMemberHandler(const DBusSignalHandlerToken& dbusSignalHandlerToken) = 0;
+            DBusSignalHandler* dbusSignalHandler,
+            const bool justAddFilter = false) = 0;
+
+    virtual DBusSignalHandlerToken subscribeForSelectiveBroadcast(bool& subscriptionAccepted,
+                                                                  const std::string& objectPath,
+                                                                  const std::string& interfaceName,
+                                                                  const std::string& interfaceMemberName,
+                                                                  const std::string& interfaceMemberSignature,
+                                                                  DBusSignalHandler* dbusSignalHandler,
+                                                                  DBusProxy* callingProxy) = 0;
+
+    virtual void unsubsribeFromSelectiveBroadcast(const std::string& eventName,
+                                                  DBusProxyConnection::DBusSignalHandlerToken subscription,
+                                                  DBusProxy* callingProxy) = 0;
+    virtual bool removeSignalMemberHandler(const DBusSignalHandlerToken& dbusSignalHandlerToken) = 0;
 
     virtual const std::shared_ptr<DBusServiceRegistry> getDBusServiceRegistry() = 0;
     virtual const std::shared_ptr<DBusObjectManager> getDBusObjectManager() = 0;
 
-    virtual bool isDispatchReady() = 0;
-    virtual bool singleDispatch() = 0;
-
     virtual void registerObjectPath(const std::string& objectPath) = 0;
     virtual void unregisterObjectPath(const std::string& objectPath) = 0;
 
+    virtual bool requestServiceNameAndBlock(const std::string& serviceName) const = 0;
+    virtual bool releaseServiceName(const std::string& serviceName) const = 0;
+
     typedef std::function<bool(const DBusMessage&)> DBusObjectPathMessageHandler;
 
     virtual void setObjectPathMessageHandler(DBusObjectPathMessageHandler) = 0;