diff options
Diffstat (limited to 'src/components/transport_manager/src/transport_manager_impl.cc')
-rw-r--r-- | src/components/transport_manager/src/transport_manager_impl.cc | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/src/components/transport_manager/src/transport_manager_impl.cc b/src/components/transport_manager/src/transport_manager_impl.cc index 433885a606..831ff0980e 100644 --- a/src/components/transport_manager/src/transport_manager_impl.cc +++ b/src/components/transport_manager/src/transport_manager_impl.cc @@ -621,29 +621,23 @@ void TransportManagerImpl::AddConnection(const ConnectionInternal& c) { connections_.push_back(c); } -namespace { -struct ConnectionFinder { - const uint32_t id_; - ConnectionFinder(const uint32_t id) : id_(id) {} - bool operator()(const transport_manager::TransportManagerImpl::Connection& - connection) const { - return id_ == connection.id; - } -}; -} - void TransportManagerImpl::RemoveConnection( const uint32_t id, transport_adapter::TransportAdapter* transport_adapter) { LOG4CXX_AUTO_TRACE(logger_); LOG4CXX_DEBUG(logger_, "Id: " << id); sync_primitives::AutoWriteLock lock(connections_lock_); - const std::vector<ConnectionInternal>::iterator it = std::find_if( - connections_.begin(), connections_.end(), ConnectionFinder(id)); - if (connections_.end() != it) { - if (transport_adapter) { - transport_adapter->RemoveFinalizedConnection(it->device, it->application); + std::vector<ConnectionInternal>::iterator it = connections_.begin(); + while (it != connections_.end()) { + if (it->id == id) { + if (transport_adapter) { + transport_adapter->RemoveFinalizedConnection(it->device, + it->application); + } + connections_.erase(it++); + break; + } else { + ++it; } - connections_.erase(it); } } |