1// Copyright 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef SYNC_SYNCABLE_WRITE_TRANSACTION_INFO_H_
6#define SYNC_SYNCABLE_WRITE_TRANSACTION_INFO_H_
7
8#include "sync/syncable/entry_kernel.h"
9#include "sync/syncable/syncable_base_transaction.h"
10
11namespace syncer {
12namespace syncable {
13
14// A struct describing the changes made during a transaction.
15struct WriteTransactionInfo {
16  WriteTransactionInfo(int64 id,
17                       tracked_objects::Location location,
18                       WriterTag writer,
19                       ImmutableEntryKernelMutationMap mutations);
20  WriteTransactionInfo();
21  ~WriteTransactionInfo();
22
23  // Caller owns the return value.
24  base::DictionaryValue* ToValue(size_t max_mutations_size) const;
25
26  int64 id;
27  // If tracked_objects::Location becomes assignable, we can use that
28  // instead.
29  std::string location_string;
30  WriterTag writer;
31  ImmutableEntryKernelMutationMap mutations;
32};
33
34typedef
35    Immutable<WriteTransactionInfo>
36    ImmutableWriteTransactionInfo;
37
38}  // namespace syncable
39}  // namespace syncer
40
41#endif  // SYNC_SYNCABLE_WRITE_TRANSACTION_INFO_H_
42