diff options
author | Juergen Gehring <juergen.gehring@bmw.de> | 2017-04-07 01:32:39 -0700 |
---|---|---|
committer | Juergen Gehring <juergen.gehring@bmw.de> | 2017-04-07 01:32:39 -0700 |
commit | 44103948d4b052603c0b361448ecb4ef7d954f79 (patch) | |
tree | f7c95861a4128e0f1cb058eff73ff2911a37f468 /include | |
parent | fad59c73675aea115d0c292b5743de2591bdf6b3 (diff) | |
download | genivi-common-api-dbus-runtime-44103948d4b052603c0b361448ecb4ef7d954f79.tar.gz |
CommonAPI-D-Bus 3.1.11.13.1.11.1
Diffstat (limited to 'include')
-rw-r--r-- | include/CommonAPI/DBus/DBusConnection.hpp | 21 | ||||
-rw-r--r-- | include/CommonAPI/DBus/DBusFactory.hpp | 2 | ||||
-rw-r--r-- | include/CommonAPI/DBus/DBusProxyConnection.hpp | 7 |
3 files changed, 20 insertions, 10 deletions
diff --git a/include/CommonAPI/DBus/DBusConnection.hpp b/include/CommonAPI/DBus/DBusConnection.hpp index e88eab6..a382bae 100644 --- a/include/CommonAPI/DBus/DBusConnection.hpp +++ b/include/CommonAPI/DBus/DBusConnection.hpp @@ -226,6 +226,7 @@ public: 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; + typedef std::unordered_map<std::string, size_t> DBusOMSignalMatchRulesMap; private: struct PendingCallNotificationData { @@ -310,10 +311,13 @@ public: void deleteAsyncHandlers(); + uint32_t getNumberOfSignalMemberHandlers(DBusSignalHandlerPath handlerPath); + ::DBusConnection* connection_; mutable std::recursive_mutex connectionGuard_; - std::mutex signalGuard_; + std::mutex signalHandlersGuard_; + std::mutex objectManagerGuard_; std::mutex serviceRegistryGuard_; @@ -325,12 +329,17 @@ public: DBusSignalMatchRulesMap dbusSignalMatchRulesMap_; - DBusSignalHandlerTable dbusSignalHandlerTable_; + DBusSignalHandlerTable dbusSignalHandlers_; + DBusSignalHandlerTable dbusSignalHandlersToAdd_; + DBusSignalHandlerTable dbusSignalHandlersToRemove_; + + std::mutex dbusOMSignalHandlersGuard_; + + DBusOMSignalMatchRulesMap dbusOMSignalMatchRulesMap_; - std::unordered_map<std::string, size_t> dbusObjectManagerSignalMatchRulesMap_; - std::unordered_multimap<std::string, std::pair<DBusSignalHandler*, - std::weak_ptr<DBusSignalHandler>>> dbusObjectManagerSignalHandlerTable_; - std::mutex dbusObjectManagerSignalGuard_; + DBusOMSignalHandlerTable dbusOMSignalHandlers_; + DBusOMSignalHandlerTable dbusOMSignalHandlersToAdd_; + DBusOMSignalHandlerTable dbusOMSignalHandlersToRemove_; COMMONAPI_EXPORT bool addObjectManagerSignalMatchRule(const std::string& dbusBusName); COMMONAPI_EXPORT bool removeObjectManagerSignalMatchRule(const std::string& dbusBusName); diff --git a/include/CommonAPI/DBus/DBusFactory.hpp b/include/CommonAPI/DBus/DBusFactory.hpp index 157382d..9654a94 100644 --- a/include/CommonAPI/DBus/DBusFactory.hpp +++ b/include/CommonAPI/DBus/DBusFactory.hpp @@ -109,7 +109,6 @@ private: // Managed services typedef std::unordered_map<std::string, std::shared_ptr<DBusStubAdapter>> ServicesMap; - COMMONAPI_EXPORT bool unregisterManagedService(const ServicesMap::iterator &); private: static std::shared_ptr<Factory> theFactory; @@ -121,6 +120,7 @@ private: std::map<std::string, StubAdapterCreateFunction> stubAdapterCreateFunctions_; ServicesMap services_; + std::recursive_mutex servicesMutex_; std::list<InterfaceInitFunction> initializers_; std::mutex initializerMutex_; diff --git a/include/CommonAPI/DBus/DBusProxyConnection.hpp b/include/CommonAPI/DBus/DBusProxyConnection.hpp index ec02082..41797e0 100644 --- a/include/CommonAPI/DBus/DBusProxyConnection.hpp +++ b/include/CommonAPI/DBus/DBusProxyConnection.hpp @@ -62,9 +62,10 @@ class DBusProxyConnection { // objectPath, interfaceName, interfaceMemberName, interfaceMemberSignature typedef std::tuple<std::string, std::string, std::string, std::string> DBusSignalHandlerPath; typedef std::unordered_map<DBusSignalHandlerPath, - std::pair<std::shared_ptr<std::recursive_mutex>, - std::map<DBusSignalHandler*, - std::weak_ptr<DBusProxyConnection::DBusSignalHandler>>>> DBusSignalHandlerTable; + std::map<DBusSignalHandler*, + std::weak_ptr<DBusProxyConnection::DBusSignalHandler>>> DBusSignalHandlerTable; + typedef std::unordered_multimap<std::string, std::pair<DBusSignalHandler*, + std::weak_ptr<DBusSignalHandler>>> DBusOMSignalHandlerTable; typedef DBusSignalHandlerPath DBusSignalHandlerToken; class DBusSignalHandler { |