summaryrefslogtreecommitdiff
path: root/include/CommonAPI/DBus/DBusProxy.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/CommonAPI/DBus/DBusProxy.hpp')
-rw-r--r--include/CommonAPI/DBus/DBusProxy.hpp53
1 files changed, 52 insertions, 1 deletions
diff --git a/include/CommonAPI/DBus/DBusProxy.hpp b/include/CommonAPI/DBus/DBusProxy.hpp
index 058a681..2f8a89c 100644
--- a/include/CommonAPI/DBus/DBusProxy.hpp
+++ b/include/CommonAPI/DBus/DBusProxy.hpp
@@ -30,7 +30,7 @@ class DBusProxyStatusEvent
virtual ~DBusProxyStatusEvent() {}
protected:
- virtual void onListenerAdded(const Listener& listener);
+ virtual void onListenerAdded(const Listener& listener, const Subscription subscription);
DBusProxy* dbusProxy_;
};
@@ -62,14 +62,61 @@ public:
COMMONAPI_EXPORT void init();
+ COMMONAPI_EXPORT virtual DBusProxyConnection::DBusSignalHandlerToken addSignalMemberHandler(
+ const std::string &objectPath,
+ const std::string &interfaceName,
+ const std::string &signalName,
+ const std::string &signalSignature,
+ DBusProxyConnection::DBusSignalHandler *dbusSignalHandler,
+ const bool justAddFilter);
+
+ COMMONAPI_EXPORT virtual DBusProxyConnection::DBusSignalHandlerToken addSignalMemberHandler(
+ const std::string &objectPath,
+ const std::string &interfaceName,
+ const std::string &signalName,
+ const std::string &signalSignature,
+ const std::string &getMethodName,
+ DBusProxyConnection::DBusSignalHandler *dbusSignalHandler,
+ const bool justAddFilter);
+
+ COMMONAPI_EXPORT virtual bool removeSignalMemberHandler(
+ const DBusProxyConnection::DBusSignalHandlerToken &_dbusSignalHandlerToken,
+ const DBusProxyConnection::DBusSignalHandler *_dbusSignalHandler = NULL);
+
+ COMMONAPI_EXPORT virtual void getCurrentValueForSignalListener(
+ const std::string &getMethodName,
+ DBusProxyConnection::DBusSignalHandler *dbusSignalHandler,
+ const uint32_t subscription);
+
private:
+ typedef std::tuple<
+ const std::string,
+ const std::string,
+ const std::string,
+ const std::string,
+ const std::string,
+ DBusProxyConnection::DBusSignalHandler*,
+ const bool,
+ bool
+ > SignalMemberHandlerTuple;
+
COMMONAPI_EXPORT DBusProxy(const DBusProxy &) = delete;
COMMONAPI_EXPORT void onDBusServiceInstanceStatus(const AvailabilityStatus& availabilityStatus);
+ COMMONAPI_EXPORT void signalMemberCallback(const CallStatus dbusMessageCallStatus,
+ const DBusMessage& dbusMessage,
+ DBusProxyConnection::DBusSignalHandler* dbusSignalHandlers,
+ const uint32_t tag);
+ COMMONAPI_EXPORT void signalInitialValueCallback(const CallStatus dbusMessageCallStatus,
+ const DBusMessage& dbusMessage,
+ DBusProxyConnection::DBusSignalHandler* dbusSignalHandlers,
+ const uint32_t tag);
+ COMMONAPI_EXPORT void addSignalMemberHandlerToQueue(SignalMemberHandlerTuple& _signalMemberHandler);
DBusProxyStatusEvent dbusProxyStatusEvent_;
DBusServiceRegistry::DBusServiceSubscription dbusServiceRegistrySubscription_;
AvailabilityStatus availabilityStatus_;
+ mutable std::mutex availabilityStatusMutex_;
DBusReadonlyAttribute<InterfaceVersionAttribute> interfaceVersionAttribute_;
@@ -77,6 +124,10 @@ private:
mutable std::mutex availabilityMutex_;
mutable std::condition_variable availabilityCondition_;
+
+ std::list<SignalMemberHandlerTuple> signalMemberHandlerQueue_;
+ CallInfo signalMemberHandlerInfo_;
+ mutable std::mutex signalMemberHandlerQueueMutex_;
};