libweave: Simplify NotifyPropertiesUpdated a little Replaced code with smaller equivalent. BUG=none TEST='FEATURES=test emerge-gizmo buffet' Change-Id: I735859b371b7e7abc45a8d5e915df7d16480d583 Reviewed-on: https://chromium-review.googlesource.com/289302 Reviewed-by: Alex Vakulenko <avakulenko@chromium.org> Tested-by: Vitaly Buka <vitalybuka@chromium.org> Trybot-Ready: David James <davidjames@chromium.org> Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/libweave/src/states/state_change_queue.cc b/libweave/src/states/state_change_queue.cc index fbce5d8..345e532 100644 --- a/libweave/src/states/state_change_queue.cc +++ b/libweave/src/states/state_change_queue.cc
@@ -16,17 +16,12 @@ bool StateChangeQueue::NotifyPropertiesUpdated(base::Time timestamp, ValueMap changed_properties) { DCHECK(thread_checker_.CalledOnValidThread()); - auto it = state_changes_.lower_bound(timestamp); - if (it == state_changes_.end() || it->first != timestamp) { - // This timestamp doesn't exist. Insert a new element. - state_changes_.emplace_hint(it, timestamp, std::move(changed_properties)); - } else { - // Merge the old property set and the new one. - // For properties that exist in both old and new property sets, keep the - // new values. - changed_properties.insert(it->second.begin(), it->second.end()); - it->second = std::move(changed_properties); - } + + auto& stored_changes = state_changes_[timestamp]; + // Merge the old property set. + changed_properties.insert(stored_changes.begin(), stored_changes.end()); + stored_changes = std::move(changed_properties); + while (state_changes_.size() > max_queue_size_) { // Queue is full. // Merge the two oldest records into one. The merge strategy is: