summaryrefslogtreecommitdiff
path: root/src/components/connection_handler/src/connection_handler_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/connection_handler/src/connection_handler_impl.cc')
-rw-r--r--src/components/connection_handler/src/connection_handler_impl.cc26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/components/connection_handler/src/connection_handler_impl.cc b/src/components/connection_handler/src/connection_handler_impl.cc
index 41d6e1dd54..8afc3e885f 100644
--- a/src/components/connection_handler/src/connection_handler_impl.cc
+++ b/src/components/connection_handler/src/connection_handler_impl.cc
@@ -270,6 +270,17 @@ void ConnectionHandlerImpl::OnConnectionPending(
LOG4CXX_DEBUG(logger_,
"Add Pending Connection #" << connection_id << " to the list.");
+ std::string endpoint = device_info.mac_address();
+ cloud_app_id_map_lock_.Acquire();
+ for (auto it = cloud_app_id_map_.begin(); it != cloud_app_id_map_.end();
+ ++it) {
+ if (endpoint == it->second.first) {
+ it->second.second = connection_id;
+ break;
+ }
+ }
+ cloud_app_id_map_lock_.Release();
+
sync_primitives::AutoWriteLock lock(connection_list_lock_);
if (connection_list_.find(connection_id) == connection_list_.end()) {
Connection* connection =
@@ -1111,6 +1122,18 @@ const uint8_t ConnectionHandlerImpl::GetSessionIdFromSecondaryTransport(
return 0;
}
+std::string ConnectionHandlerImpl::GetCloudAppID(
+ const transport_manager::ConnectionUID connection_id) const {
+ sync_primitives::AutoLock auto_lock(cloud_app_id_map_lock_);
+ for (auto it = cloud_app_id_map_.begin(); it != cloud_app_id_map_.end();
+ ++it) {
+ if (connection_id == it->second.second) {
+ return it->first;
+ }
+ }
+ return std::string();
+}
+
struct CompareMAC {
explicit CompareMAC(const std::string& mac) : mac_(mac) {}
bool operator()(const DeviceMap::value_type& device) {
@@ -1330,6 +1353,9 @@ void ConnectionHandlerImpl::AddCloudAppDevice(
const std::string& policy_app_id,
const std::string& endpoint,
const std::string& cloud_transport_type) {
+ cloud_app_id_map_lock_.Acquire();
+ cloud_app_id_map_[policy_app_id] = std::make_pair(endpoint, 0);
+ cloud_app_id_map_lock_.Release();
transport_manager_.AddCloudDevice(endpoint, cloud_transport_type);
}