14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file.
44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "sync/syncable/syncable_model_neutral_write_transaction.h"
64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "sync/syncable/directory.h"
84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace syncer {
104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace syncable {
114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)ModelNeutralWriteTransaction::ModelNeutralWriteTransaction(
134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    const tracked_objects::Location& location,
144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    WriterTag writer, Directory* directory)
154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    : BaseWriteTransaction(location,
164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                           "ModelNeutralWriteTransaction",
174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                           writer,
184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                           directory) {
194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Lock();
204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)ModelNeutralWriteTransaction::~ModelNeutralWriteTransaction() {
234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  directory()->CheckInvariantsOnTransactionClose(this, modified_handles_);
244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  HandleUnrecoverableErrorIfSet();
254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Unlock();
264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)void ModelNeutralWriteTransaction::TrackChangesTo(const EntryKernel* entry) {
294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  modified_handles_.insert(entry->ref(META_HANDLE));
304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}  // namespace syncer
334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}  // namespace syncable
34