diff options
author | Artem Nosach <ANosach@luxoft.com> | 2015-06-09 10:44:38 +0300 |
---|---|---|
committer | Artem Nosach <ANosach@luxoft.com> | 2015-06-23 17:09:25 +0300 |
commit | ba12e8f88e8ddc22e13842d8fddb2f2da3210db3 (patch) | |
tree | cefe9d635db6dc29ae8561a12a80f52427204006 /src/3rd_party-static | |
parent | 4e7ee0a886c3dad56a49293f98a2324b3d148a6f (diff) | |
download | sdl_core-ba12e8f88e8ddc22e13842d8fddb2f2da3210db3.tar.gz |
Post review changes.
Diffstat (limited to 'src/3rd_party-static')
-rw-r--r-- | src/3rd_party-static/MessageBroker/include/CMessageBrokerRegistry.hpp | 6 | ||||
-rw-r--r-- | src/3rd_party-static/MessageBroker/src/lib_messagebroker/CMessageBrokerRegistry.cpp | 36 |
2 files changed, 23 insertions, 19 deletions
diff --git a/src/3rd_party-static/MessageBroker/include/CMessageBrokerRegistry.hpp b/src/3rd_party-static/MessageBroker/include/CMessageBrokerRegistry.hpp index b4c5376621..001f978bbf 100644 --- a/src/3rd_party-static/MessageBroker/include/CMessageBrokerRegistry.hpp +++ b/src/3rd_party-static/MessageBroker/include/CMessageBrokerRegistry.hpp @@ -53,6 +53,12 @@ namespace NsMessageBroker void removeControllersByDescriptor(const int fd); /** + * \brief Remove all subscribers by descriptor + * \param fd descriptor + */ + void removeSubscribersByDescriptor(const int fd); + + /** * \brief adds notification subscriber to the registry. * \param fd file descriptor of controller. * \param name name of property which should be observed. diff --git a/src/3rd_party-static/MessageBroker/src/lib_messagebroker/CMessageBrokerRegistry.cpp b/src/3rd_party-static/MessageBroker/src/lib_messagebroker/CMessageBrokerRegistry.cpp index 278821c8a2..1e63f0ba31 100644 --- a/src/3rd_party-static/MessageBroker/src/lib_messagebroker/CMessageBrokerRegistry.cpp +++ b/src/3rd_party-static/MessageBroker/src/lib_messagebroker/CMessageBrokerRegistry.cpp @@ -5,7 +5,6 @@ */ #include "CMessageBrokerRegistry.hpp" - #include "libMBDebugHelper.h" #include <vector> @@ -55,7 +54,7 @@ namespace NsMessageBroker int fd; { - sync_primitives::AutoLock controllers_lock(mControllersListLock); + sync_primitives::AutoLock lock(mControllersListLock); it = mControllersList.find(name); if (it != mControllersList.end()) { @@ -67,38 +66,37 @@ namespace NsMessageBroker } DBG_MSG(("Count of controllers: %d\n", mControllersList.size())); } - - sync_primitives::AutoLock subscribers_lock(mSubscribersListLock); - std::multimap <std::string, int>::iterator it_s = mSubscribersList.begin(); - for (; it_s !=mSubscribersList.end(); ) { - if (it_s->second == fd) { - mSubscribersList.erase(it_s++); - } else { - ++it_s; - } - } + removeSubscribersByDescriptor(fd); } void CMessageBrokerRegistry::removeControllersByDescriptor(const int fd) { DBG_MSG(("CMessageBrokerRegistry::removeControllersByDescriptor(%d)\n", fd)); - std::vector<std::string> controllers_to_delete; { - sync_primitives::AutoLock controllers_lock(mControllersListLock); + sync_primitives::AutoLock lock(mControllersListLock); std::map <std::string, int>::iterator it = mControllersList.begin(); for (; it != mControllersList.end();) { if (it->second == fd) { - controllers_to_delete.push_back((it++)->first); + mControllersList.erase(it); } else { ++it; } } } + removeSubscribersByDescriptor(fd); + } - std::vector<std::string>::iterator delete_it = - controllers_to_delete.begin(); - for (; controllers_to_delete.end() != delete_it; ++delete_it) { - deleteController(*delete_it); + void CMessageBrokerRegistry::removeSubscribersByDescriptor(const int fd) { + DBG_MSG(("CMessageBrokerRegistry::removeSubscribersByDescriptor(%d)\n", + fd)); + sync_primitives::AutoLock lock(mSubscribersListLock); + std::multimap <std::string, int>::iterator it_s = mSubscribersList.begin(); + for (; it_s !=mSubscribersList.end(); ) { + if (it_s->second == fd) { + mSubscribersList.erase(it_s++); + } else { + ++it_s; + } } } |