| 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
|
|
|