summaryrefslogtreecommitdiffstats
path: root/sync/syncable/entry_kernel.h
diff options
context:
space:
mode:
authorhaitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-05 01:15:51 +0000
committerhaitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-05 01:15:51 +0000
commit6add02aaf5d93a32bec7e32e1b0ff527f1bb3d18 (patch)
treeb2a8fbec180d9a6457ed0856a5cb213e9e2c751a /sync/syncable/entry_kernel.h
parent0e11e9fa745c6174f709773346368c4f771ddb2f (diff)
downloadchromium_src-6add02aaf5d93a32bec7e32e1b0ff527f1bb3d18.zip
chromium_src-6add02aaf5d93a32bec7e32e1b0ff527f1bb3d18.tar.gz
chromium_src-6add02aaf5d93a32bec7e32e1b0ff527f1bb3d18.tar.bz2
[Sync] Add support for loading, updating and querying delete journals in
Directory. Delete journals keeps deleted metas until the persistence of the deletes in native model is confirmed. When an entry is deleted in sync model, a copy is added to delete journals in memory and saved in database later. Next time when the client restarts, if some native data doesn't match with sync data but matches with a delete journal, it's safe to assume that it's because native delete was not persisted and the native data should be deleted. This helps prevent back-from-dead problem due to native model and sync model get out-of-sync. BUG=121928 Review URL: https://chromiumcodereview.appspot.com/11441026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@175248 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync/syncable/entry_kernel.h')
-rw-r--r--sync/syncable/entry_kernel.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/sync/syncable/entry_kernel.h b/sync/syncable/entry_kernel.h
index 6dc88a7..e9cf828 100644
--- a/sync/syncable/entry_kernel.h
+++ b/sync/syncable/entry_kernel.h
@@ -5,6 +5,8 @@
#ifndef SYNC_SYNCABLE_ENTRY_KERNEL_H_
#define SYNC_SYNCABLE_ENTRY_KERNEL_H_
+#include <set>
+
#include "base/time.h"
#include "base/values.h"
#include "sync/base/sync_export.h"
@@ -323,6 +325,17 @@ struct SYNC_EXPORT_PRIVATE EntryKernel {
bool dirty_;
};
+class EntryKernelLessByMetaHandle {
+ public:
+ inline bool operator()(const EntryKernel* a,
+ const EntryKernel* b) const {
+ return a->ref(META_HANDLE) < b->ref(META_HANDLE);
+ }
+};
+
+typedef std::set<const EntryKernel*, EntryKernelLessByMetaHandle>
+ EntryKernelSet;
+
struct EntryKernelMutation {
EntryKernel original, mutated;
};