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)