summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJuergen Gehring <juergen.gehring@bmw.de>2017-04-07 01:32:39 -0700
committerJuergen Gehring <juergen.gehring@bmw.de>2017-04-07 01:32:39 -0700
commit44103948d4b052603c0b361448ecb4ef7d954f79 (patch)
treef7c95861a4128e0f1cb058eff73ff2911a37f468 /include
parentfad59c73675aea115d0c292b5743de2591bdf6b3 (diff)
downloadgenivi-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.hpp21
-rw-r--r--include/CommonAPI/DBus/DBusFactory.hpp2
-rw-r--r--include/CommonAPI/DBus/DBusProxyConnection.hpp7
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 {