diff options
Diffstat (limited to 'sync/engine/entity_tracker.cc')
-rw-r--r-- | sync/engine/entity_tracker.cc | 35 |
1 files changed, 2 insertions, 33 deletions
diff --git a/sync/engine/entity_tracker.cc b/sync/engine/entity_tracker.cc index bad76f9..0f10906 100644 --- a/sync/engine/entity_tracker.cc +++ b/sync/engine/entity_tracker.cc @@ -193,14 +193,8 @@ void EntityTracker::ReceiveCommitResponse(const std::string& response_id, } void EntityTracker::ReceiveUpdate(int64 version) { - if (version <= highest_gu_response_version_) - return; - - highest_gu_response_version_ = version; - - // Got an applicable update newer than any pending updates. It must be safe - // to discard the old pending update, if there was one. - ClearPendingUpdate(); + highest_gu_response_version_ = + std::max(highest_gu_response_version_, version); if (IsInConflict()) { // Incoming update clobbers the pending commit on the sync thread. @@ -209,35 +203,10 @@ void EntityTracker::ReceiveUpdate(int64 version) { } } -bool EntityTracker::ReceivePendingUpdate(const UpdateResponseData& data) { - if (data.response_version < highest_gu_response_version_) - return false; - - highest_gu_response_version_ = data.response_version; - pending_update_.reset(new UpdateResponseData(data)); - ClearPendingCommit(); - return true; -} - -bool EntityTracker::HasPendingUpdate() const { - return !!pending_update_; -} - -UpdateResponseData EntityTracker::GetPendingUpdate() const { - return *pending_update_; -} - -void EntityTracker::ClearPendingUpdate() { - pending_update_.reset(); -} - bool EntityTracker::IsInConflict() const { if (!is_commit_pending_) return false; - if (HasPendingUpdate()) - return true; - if (highest_gu_response_version_ <= highest_commit_response_version_) { // The most recent server state was created in a commit made by this // client. We're fully up to date, and therefore not in conflict. |