123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// found in the LICENSE file.
423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef SYNC_ENGINE_PROCESS_UPDATES_UTIL_H_
623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#define SYNC_ENGINE_PROCESS_UPDATES_UTIL_H_
723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include <vector>
923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "sync/internal_api/public/base/model_type.h"
1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)namespace sync_pb {
1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)class SyncEntity;
1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
1523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)namespace syncer {
175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace sessions {
196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class StatusController;
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)namespace syncable {
2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)class ModelNeutralWriteTransaction;
2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)class Directory;
2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
2723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)struct UpdateCounters;
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtypedef std::vector<const sync_pb::SyncEntity*> SyncEntityList;
305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Processes all the updates associated with a single ModelType.
3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void ProcessDownloadedUpdates(
3323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    syncable::Directory* dir,
3423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    syncable::ModelNeutralWriteTransaction* trans,
3523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    ModelType type,
3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    const SyncEntityList& applicable_updates,
3723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    sessions::StatusController* status,
3823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    UpdateCounters* counters);
3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Tombstones all entries of |type| whose versions are older than
4123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// |version_watermark| unless they are type root or unsynced/unapplied.
4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void ExpireEntriesByVersion(syncable::Directory* dir,
435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                            syncable::ModelNeutralWriteTransaction* trans,
445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                            ModelType type,
4523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                            int64 version_watermark);
4623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
4723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}  // namespace syncer
4823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif  // SYNC_ENGINE_PROCESS_UPDATES_UTIL_H_
5023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)