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 | |
parent | 4e7ee0a886c3dad56a49293f98a2324b3d148a6f (diff) | |
download | smartdevicelink-ba12e8f88e8ddc22e13842d8fddb2f2da3210db3.tar.gz |
Post review changes.
3 files changed, 28 insertions, 22 deletions
diff --git a/src/3rd_party-static/MessageBroker/include/CMessageBrokerRegistry.hpp b/src/3rd_party-static/MessageBroker/include/CMessageBrokerRegistry.hpp index b4c537662..001f978bb 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 278821c8a..1e63f0ba3 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; + } } } diff --git a/src/components/policy/src/policy/sqlite_wrapper/src/sql_database.cc b/src/components/policy/src/policy/sqlite_wrapper/src/sql_database.cc index 097e38a48..6a1d70f00 100644 --- a/src/components/policy/src/policy/sqlite_wrapper/src/sql_database.cc +++ b/src/components/policy/src/policy/sqlite_wrapper/src/sql_database.cc @@ -50,9 +50,7 @@ SQLDatabase::SQLDatabase(const std::string& db_name) error_(SQLITE_OK) {} SQLDatabase::~SQLDatabase() { - if (conn_) { - Close(); - } + Close(); } bool SQLDatabase::Open() { @@ -68,6 +66,10 @@ bool SQLDatabase::IsReadWrite() { } void SQLDatabase::Close() { + if (!conn_) { + return; + } + sync_primitives::AutoLock auto_lock(conn_lock_); error_ = sqlite3_close(conn_); if (error_ == SQLITE_OK) { |