Index: sync/engine/update_applicator.cc |
diff --git a/sync/engine/update_applicator.cc b/sync/engine/update_applicator.cc |
deleted file mode 100644 |
index 56996398f2257c83d35740b296bc2ed2d90eb4d7..0000000000000000000000000000000000000000 |
--- a/sync/engine/update_applicator.cc |
+++ /dev/null |
@@ -1,99 +0,0 @@ |
-// Copyright 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "sync/engine/update_applicator.h" |
- |
-#include <stdint.h> |
- |
-#include <vector> |
- |
-#include "base/logging.h" |
-#include "sync/engine/syncer_util.h" |
-#include "sync/syncable/entry.h" |
-#include "sync/syncable/mutable_entry.h" |
-#include "sync/syncable/syncable_id.h" |
-#include "sync/syncable/syncable_write_transaction.h" |
- |
-using std::vector; |
- |
-namespace syncer { |
- |
-using syncable::ID; |
- |
-UpdateApplicator::UpdateApplicator(Cryptographer* cryptographer) |
- : cryptographer_(cryptographer), |
- updates_applied_(0), |
- encryption_conflicts_(0), |
- hierarchy_conflicts_(0) { |
-} |
- |
-UpdateApplicator::~UpdateApplicator() { |
-} |
- |
-// Attempt to apply all updates, using multiple passes if necessary. |
-// |
-// Some updates must be applied in order. For example, children must be created |
-// after their parent folder is created. This function runs an O(n^2) algorithm |
-// that will keep trying until there is nothing left to apply, or it stops |
-// making progress, which would indicate that the hierarchy is invalid. |
-// |
-// The update applicator also has to deal with simple conflicts, which occur |
-// when an item is modified on both the server and the local model. We remember |
-// their IDs so they can be passed to the conflict resolver after all the other |
-// applications are complete. |
-// |
-// Finally, there are encryption conflicts, which can occur when we don't have |
-// access to all the Nigori keys. There's nothing we can do about them here. |
-void UpdateApplicator::AttemptApplications( |
- syncable::WriteTransaction* trans, |
- const std::vector<int64_t>& handles) { |
- std::vector<int64_t> to_apply = handles; |
- |
- DVLOG(1) << "UpdateApplicator running over " << to_apply.size() << " items."; |
- while (!to_apply.empty()) { |
- std::vector<int64_t> to_reapply; |
- |
- for (std::vector<int64_t>::iterator i = to_apply.begin(); |
- i != to_apply.end(); ++i) { |
- syncable::MutableEntry entry(trans, syncable::GET_BY_HANDLE, *i); |
- UpdateAttemptResponse result = AttemptToUpdateEntry( |
- trans, &entry, cryptographer_); |
- |
- switch (result) { |
- case SUCCESS: |
- updates_applied_++; |
- break; |
- case CONFLICT_SIMPLE: |
- simple_conflict_ids_.insert(entry.GetId()); |
- break; |
- case CONFLICT_ENCRYPTION: |
- encryption_conflicts_++; |
- break; |
- case CONFLICT_HIERARCHY: |
- // The decision to classify these as hierarchy conflcits is tentative. |
- // If we make any progress this round, we'll clear the hierarchy |
- // conflict count and attempt to reapply these updates. |
- to_reapply.push_back(*i); |
- break; |
- default: |
- NOTREACHED(); |
- break; |
- } |
- } |
- |
- if (to_reapply.size() == to_apply.size()) { |
- // We made no progress. Must be stubborn hierarchy conflicts. |
- hierarchy_conflicts_ = to_apply.size(); |
- break; |
- } |
- |
- // We made some progress, so prepare for what might be another iteration. |
- // If everything went well, to_reapply will be empty and we'll break out on |
- // the while condition. |
- to_apply.swap(to_reapply); |
- to_reapply.clear(); |
- } |
-} |
- |
-} // namespace syncer |