summaryrefslogtreecommitdiff
path: root/include/CommonAPI/DBus/DBusConnection.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/CommonAPI/DBus/DBusConnection.hpp')
-rw-r--r--include/CommonAPI/DBus/DBusConnection.hpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/include/CommonAPI/DBus/DBusConnection.hpp b/include/CommonAPI/DBus/DBusConnection.hpp
index a382bae..b5c75dd 100644
--- a/include/CommonAPI/DBus/DBusConnection.hpp
+++ b/include/CommonAPI/DBus/DBusConnection.hpp
@@ -158,7 +158,7 @@ public:
COMMONAPI_EXPORT virtual bool addObjectManagerSignalMemberHandler(const std::string& dbusBusName,
std::weak_ptr<DBusSignalHandler> dbusSignalHandler);
COMMONAPI_EXPORT virtual bool removeObjectManagerSignalMemberHandler(const std::string& dbusBusName,
- DBusSignalHandler* dbusSignalHandler);
+ const DBusSignalHandler* dbusSignalHandler);
COMMONAPI_EXPORT DBusSignalHandlerToken addSignalMemberHandler(const std::string& objectPath,
const std::string& interfaceName,
@@ -223,6 +223,16 @@ public:
inline std::weak_ptr<DBusMainloop> getLoop() { return loop_; }
#endif
+ COMMONAPI_EXPORT virtual void addSignalStateHandler(
+ std::shared_ptr<DBusProxyConnection::DBusSignalHandler> _handler,
+ const uint32_t _subscription);
+
+ COMMONAPI_EXPORT virtual void removeSignalStateHandler(
+ std::shared_ptr<DBusProxyConnection::DBusSignalHandler> _handler,
+ const uint32_t _tag, bool _remove_all);
+
+ COMMONAPI_EXPORT virtual void handleSignalStates();
+
typedef std::tuple<std::string, std::string, std::string> DBusSignalMatchRuleTuple;
typedef std::pair<uint32_t, std::string> DBusSignalMatchRuleMapping;
typedef std::unordered_map<DBusSignalMatchRuleTuple, DBusSignalMatchRuleMapping> DBusSignalMatchRulesMap;
@@ -386,7 +396,7 @@ public:
mutable std::mutex enforceTimeoutMutex_;
mutable std::condition_variable_any enforceTimeoutCondition_;
- mutable std::shared_ptr<std::thread> enforcerThread_;
+ mutable std::thread* enforcerThread_;
mutable std::recursive_mutex enforcerThreadMutex_;
bool enforcerThreadCancelled_;
ConnectionId_t connectionId_;
@@ -409,6 +419,9 @@ public:
std::vector<DBusMessageReplyAsyncHandler*> asyncHandlersToDelete_;
std::mutex asyncHandlersToDeleteMutex_;
+
+ std::map<std::shared_ptr<DBusProxyConnection::DBusSignalHandler>, std::set<uint32_t>> signalStateHandlers_;
+ std::mutex signalStateHandlersMutex_;
};
template<class Function, class... Arguments>