summaryrefslogtreecommitdiff
path: root/src/components/transport_manager/src/transport_manager_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/transport_manager/src/transport_manager_impl.cc')
-rw-r--r--src/components/transport_manager/src/transport_manager_impl.cc28
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);
}
}