summaryrefslogtreecommitdiff
path: root/src/components/transport_manager/include/transport_manager/transport_manager_impl.h
diff options
context:
space:
mode:
authorElisey Zamakhov <EZamakhov@luxoft.com>2015-03-20 15:17:48 +0300
committerElisey Zamakhov <EZamakhov@luxoft.com>2015-03-24 20:19:35 +0300
commit1fc5461545dc1787be851fde9fc57560f6414da2 (patch)
tree06db88b7baad496668e64013bcc3ae67fed73550 /src/components/transport_manager/include/transport_manager/transport_manager_impl.h
parentf9202ede545b043f913685bcc139b1bc5af92bc9 (diff)
downloadsdl_core-1fc5461545dc1787be851fde9fc57560f6414da2.tar.gz
Add TMIpl::Handle2GUIDConverter::conversion_table_ synchronization
Diffstat (limited to 'src/components/transport_manager/include/transport_manager/transport_manager_impl.h')
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_manager_impl.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/components/transport_manager/include/transport_manager/transport_manager_impl.h b/src/components/transport_manager/include/transport_manager/transport_manager_impl.h
index 97498347e2..023cfecd41 100644
--- a/src/components/transport_manager/include/transport_manager/transport_manager_impl.h
+++ b/src/components/transport_manager/include/transport_manager/transport_manager_impl.h
@@ -288,6 +288,8 @@ class TransportManagerImpl : public TransportManager,
}
DeviceHandle UidToHandle(const DeviceUID& dev_uid, bool& is_new) {
+ {
+ sync_primitives::AutoReadLock lock(conversion_table_lock);
ConversionTable::iterator it = std::find(
conversion_table_.begin(), conversion_table_.end(), dev_uid);
if (it != conversion_table_.end()) {
@@ -295,12 +297,15 @@ class TransportManagerImpl : public TransportManager,
return std::distance(conversion_table_.begin(), it) +
1; // handle begin since 1 (one)
}
+ }
is_new = true;
+ sync_primitives::AutoWriteLock lock(conversion_table_lock);
conversion_table_.push_back(dev_uid);
return conversion_table_.size(); // handle begin since 1 (one)
}
DeviceUID HandleToUid(DeviceHandle handle) {
+ sync_primitives::AutoReadLock lock(conversion_table_lock);
if (handle == 0 || handle > conversion_table_.size()) {
return DeviceUID();
}
@@ -308,6 +313,7 @@ class TransportManagerImpl : public TransportManager,
}
ConversionTable conversion_table_;
+ sync_primitives::RWLock conversion_table_lock;
};
/**