Chromium Code Reviews| Index: sync/syncable/mutable_entry.cc |
| diff --git a/sync/syncable/mutable_entry.cc b/sync/syncable/mutable_entry.cc |
| index 869320f33e20aa487ebbc4ecaefc015ed9f1d90e..afd36ea0b63e565cd58912c3bb8bfab28ee83bd2 100644 |
| --- a/sync/syncable/mutable_entry.cc |
| +++ b/sync/syncable/mutable_entry.cc |
| @@ -5,6 +5,7 @@ |
| #include "sync/syncable/mutable_entry.h" |
| #include "base/memory/scoped_ptr.h" |
| +#include "sync/internal_api/public/base/node_ordinal.h" |
| #include "sync/syncable/directory.h" |
| #include "sync/syncable/scoped_index_updater.h" |
| #include "sync/syncable/scoped_kernel_lock.h" |
| @@ -41,6 +42,7 @@ void MutableEntry::Init(WriteTransaction* trans, const Id& parent_id, |
| kernel->put(MTIME, now); |
| // We match the database defaults here |
| kernel->put(BASE_VERSION, CHANGES_VERSION); |
| + kernel->put(SERVER_ORDINAL_IN_PARENT, NodeOrdinal::CreateInitialOrdinal()); |
| if (!trans->directory()->InsertEntry(trans, kernel.get())) { |
| return; // We failed inserting, nothing more to do. |
| } |
| @@ -66,6 +68,7 @@ MutableEntry::MutableEntry(WriteTransaction* trans, CreateNewUpdateItem, |
| kernel->put(ID, id); |
| kernel->put(META_HANDLE, trans->directory_->NextMetahandle()); |
| kernel->mark_dirty(trans->directory_->kernel_->dirty_metahandles); |
| + kernel->put(SERVER_ORDINAL_IN_PARENT, NodeOrdinal::CreateInitialOrdinal()); |
| kernel->put(IS_DEL, true); |
| // We match the database defaults here |
| kernel->put(BASE_VERSION, CHANGES_VERSION); |
| @@ -141,14 +144,14 @@ bool MutableEntry::PutIsDel(bool is_del) { |
| return true; |
| } |
| -bool MutableEntry::Put(Int64Field field, const int64& value) { |
| +bool MutableEntry::Put(OrdinalField field, const NodeOrdinal& value) { |
| DCHECK(kernel_); |
|
akalin
2012/10/05 22:40:27
DCHECK here that |value| is a valid ordinal
vishwath
2012/10/08 20:17:49
Done.
|
| write_transaction_->SaveOriginal(kernel_); |
| - if (kernel_->ref(field) != value) { |
| + if(!kernel_->ref(field).Equals(value)) { |
| ScopedKernelLock lock(dir()); |
| - if (SERVER_POSITION_IN_PARENT == field) { |
| - ScopedIndexUpdater<ParentIdAndHandleIndexer> updater(lock, kernel_, |
| - dir()->kernel_->parent_id_child_index); |
| + if (SERVER_ORDINAL_IN_PARENT == field) { |
| + ScopedIndexUpdater<ParentIdAndHandleIndexer> updater( |
| + lock, kernel_, dir()->kernel_->parent_id_child_index); |
| kernel_->put(field, value); |
| } else { |
| kernel_->put(field, value); |
| @@ -158,6 +161,17 @@ bool MutableEntry::Put(Int64Field field, const int64& value) { |
| return true; |
| } |
| +bool MutableEntry::Put(Int64Field field, const int64& value) { |
| + DCHECK(kernel_); |
| + write_transaction_->SaveOriginal(kernel_); |
| + if (kernel_->ref(field) != value) { |
| + ScopedKernelLock lock(dir()); |
| + kernel_->put(field, value); |
| + kernel_->mark_dirty(dir()->kernel_->dirty_metahandles); |
| + } |
| + return true; |
| +} |
| + |
| bool MutableEntry::Put(TimeField field, const base::Time& value) { |
| DCHECK(kernel_); |
| write_transaction_->SaveOriginal(kernel_); |