Index: chrome/browser/sync/syncable/syncable.h |
diff --git a/chrome/browser/sync/syncable/syncable.h b/chrome/browser/sync/syncable/syncable.h |
index bebf9a92540a4ea8aafd069de4822e7e0570d068..535ab8e81730611389a14ea648baa822167548fc 100644 |
--- a/chrome/browser/sync/syncable/syncable.h |
+++ b/chrome/browser/sync/syncable/syncable.h |
@@ -8,6 +8,7 @@ |
#include <algorithm> |
#include <bitset> |
+#include <cstddef> |
#include <iosfwd> |
#include <limits> |
#include <map> |
@@ -566,6 +567,48 @@ typedef std::map<int64, EntryKernelMutation> EntryKernelMutationMap; |
typedef browser_sync::Immutable<EntryKernelMutationMap> |
ImmutableEntryKernelMutationMap; |
+// A WriteTransaction has a writer tag describing which body of code is doing |
+// the write. This is defined up here since WriteTransactionInfo also contains |
+// one. |
+enum WriterTag { |
+ INVALID, |
+ SYNCER, |
+ AUTHWATCHER, |
+ UNITTEST, |
+ VACUUM_AFTER_SAVE, |
+ PURGE_ENTRIES, |
+ SYNCAPI |
+}; |
+ |
+// Make sure to update this if you update WriterTag. |
+std::string WriterTagToString(WriterTag writer_tag); |
+ |
+struct WriteTransactionInfo { |
+ WriteTransactionInfo(int64 id, |
+ tracked_objects::Location location, |
+ WriterTag writer, |
+ ImmutableEntryKernelMutationMap mutations); |
+ WriteTransactionInfo(); |
+ ~WriteTransactionInfo(); |
+ |
+ // Caller owns the return value. |
+ base::DictionaryValue* ToValue(size_t max_mutations_size) const; |
+ |
+ int64 id; |
+ // TODO(akalin): Use Location when it becomes assignable. |
+ std::string location_string; |
+ WriterTag writer; |
+ ImmutableEntryKernelMutationMap mutations; |
+}; |
+ |
+typedef |
+ browser_sync::Immutable<WriteTransactionInfo> |
+ ImmutableWriteTransactionInfo; |
+ |
+// Caller owns the return value. |
+base::DictionaryValue* EntryKernelMutationToValue( |
+ const EntryKernelMutation& mutation); |
+ |
// Caller owns the return value. |
base::ListValue* EntryKernelMutationMapToValue( |
const EntryKernelMutationMap& mutations); |
@@ -640,22 +683,6 @@ struct Index { |
typedef std::set<EntryKernel*, typename Indexer::Comparator> Set; |
}; |
-// a WriteTransaction has a writer tag describing which body of code is doing |
-// the write. This is defined up here since DirectoryChangeEvent also contains |
-// one. |
-enum WriterTag { |
- INVALID, |
- SYNCER, |
- AUTHWATCHER, |
- UNITTEST, |
- VACUUM_AFTER_SAVE, |
- PURGE_ENTRIES, |
- SYNCAPI |
-}; |
- |
-// Make sure to update this if you update WriterTag. |
-std::string WriterTagToString(WriterTag writer_tag); |
- |
// The name Directory in this case means the entire directory |
// structure within a single user account. |
// |
@@ -999,6 +1026,9 @@ class Directory { |
// Implements ReadTransaction / WriteTransaction using a simple lock. |
base::Lock transaction_mutex; |
+ // Protected by transaction_mutex. Used by WriteTransactions. |
+ int64 next_write_transaction_id; |
+ |
// The name of this directory. |
std::string const name; |
@@ -1042,7 +1072,7 @@ class Directory { |
// A unique identifier for this account's cache db, used to generate |
// unique server IDs. No need to lock, only written at init time. |
- std::string cache_guid; |
+ const std::string cache_guid; |
// It doesn't make sense for two threads to run SaveChanges at the same |
// time; this mutex protects that activity. |