picojson::value IotconClientManager::StoreRemoteResource(FoundRemoteInfoPtr ptr) {
ScopeLogger();
- if (0 == ptr->id) {
- LoggerD("New remote, needed to be added to map");
- ptr->id = GetRemoteNextId();
- remotes_map_.insert(std::make_pair(ptr->id, ptr));
- } else {
- LoggerD("Remote is already stored, just increase ref_count");
- ptr->ref_count++;
+ {
+ std::lock_guard<std::mutex> guard(remotes_map_mutex_);
+ if (0 == ptr->id) {
+ LoggerD("New remote, needed to be added to map");
+ ptr->id = GetRemoteNextId();
+ remotes_map_.insert(std::make_pair(ptr->id, ptr));
+ } else {
+ LoggerD("Remote is already stored, just increase ref_count");
+ ptr->ref_count++;
+ }
}
return PrepareManageIdAnswer(true, ptr->id);
}
picojson::value IotconClientManager::RemoveRemoteResource(FoundRemoteInfoPtr ptr) {
ScopeLogger();
- ptr->ref_count--;
- if (ptr->ref_count <= 0) {
- LoggerD("Handle not needed anymore, removing from map");
- Remove(ptr->id);
- remotes_map_.erase(ptr->id);
- return PrepareManageIdAnswer(false);
+ {
+ std::lock_guard<std::mutex> guard(remotes_map_mutex_);
+ ptr->ref_count--;
+ if (ptr->ref_count <= 0) {
+ LoggerD("Handle not needed anymore, removing from map");
+ Remove(ptr->id);
+ remotes_map_.erase(ptr->id);
+ return PrepareManageIdAnswer(false);
+ }
}
return PrepareManageIdAnswer(true, ptr->id);
}