Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(165)

Side by Side Diff: chrome/browser/sync/internal_api/change_reorder_buffer.h

Issue 8402014: [Sync] Make GetFirstChildId return a flag indicating success (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // Defines ChangeReorderBuffer, which can be used to sort a list of item 5 // Defines ChangeReorderBuffer, which can be used to sort a list of item
6 // actions to achieve the ordering constraint required by the SyncObserver 6 // actions to achieve the ordering constraint required by the SyncObserver
7 // interface of the SyncAPI. 7 // interface of the SyncAPI.
8 8
9 #ifndef CHROME_BROWSER_SYNC_INTERNAL_API_CHANGE_REORDER_BUFFER_H_ 9 #ifndef CHROME_BROWSER_SYNC_INTERNAL_API_CHANGE_REORDER_BUFFER_H_
10 #define CHROME_BROWSER_SYNC_INTERNAL_API_CHANGE_REORDER_BUFFER_H_ 10 #define CHROME_BROWSER_SYNC_INTERNAL_API_CHANGE_REORDER_BUFFER_H_
11 #pragma once 11 #pragma once
12 12
13 #include <map> 13 #include <map>
14 #include <vector> 14 #include <vector>
15 15
16 #include "base/compiler_specific.h"
16 #include "base/memory/linked_ptr.h" 17 #include "base/memory/linked_ptr.h"
17 #include "chrome/browser/sync/internal_api/base_transaction.h" 18 #include "chrome/browser/sync/internal_api/base_transaction.h"
18 #include "chrome/browser/sync/internal_api/change_record.h" 19 #include "chrome/browser/sync/internal_api/change_record.h"
19 #include "chrome/browser/sync/protocol/sync.pb.h" 20 #include "chrome/browser/sync/protocol/sync.pb.h"
20 21
21 namespace sync_api { 22 namespace sync_api {
22 23
23 // ChangeReorderBuffer is a utility type which accepts an unordered set 24 // ChangeReorderBuffer is a utility type which accepts an unordered set
24 // of changes (via its Push methods), and yields an ImmutableChangeRecordList 25 // of changes (via its Push methods), and yields an ImmutableChangeRecordList
25 // (via the GetAllChangesInTreeOrder method) that are in the order that 26 // (via the GetAllChangesInTreeOrder method) that are in the order that
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 // Reset the buffer, forgetting any pushed items, so that it can be used 78 // Reset the buffer, forgetting any pushed items, so that it can be used
78 // again to reorder a new set of changes. 79 // again to reorder a new set of changes.
79 void Clear() { 80 void Clear() {
80 operations_.clear(); 81 operations_.clear();
81 } 82 }
82 83
83 bool IsEmpty() const { 84 bool IsEmpty() const {
84 return operations_.empty(); 85 return operations_.empty();
85 } 86 }
86 87
87 // Output a reordered list of changes to |changelist| using the items that 88 // Output a reordered list of changes to |changes| using the items
88 // were pushed into the reorder buffer. |sync_trans| is used to determine the 89 // that were pushed into the reorder buffer. |sync_trans| is used to
89 // ordering. 90 // determine the ordering. Returns true if successful, or false if
90 ImmutableChangeRecordList 91 // an error was encountered.
91 GetAllChangesInTreeOrder(const BaseTransaction* sync_trans); 92 bool GetAllChangesInTreeOrder(
93 const BaseTransaction* sync_trans,
94 ImmutableChangeRecordList* changes) WARN_UNUSED_RESULT;
92 95
93 private: 96 private:
94 class Traversal; 97 class Traversal;
95 enum Operation { 98 enum Operation {
96 OP_ADD, // AddedItem. 99 OP_ADD, // AddedItem.
97 OP_DELETE, // DeletedItem. 100 OP_DELETE, // DeletedItem.
98 OP_UPDATE_PROPERTIES_ONLY, // UpdatedItem with position_changed=0. 101 OP_UPDATE_PROPERTIES_ONLY, // UpdatedItem with position_changed=0.
99 OP_UPDATE_POSITION_AND_PROPERTIES, // UpdatedItem with position_changed=1. 102 OP_UPDATE_POSITION_AND_PROPERTIES, // UpdatedItem with position_changed=1.
100 }; 103 };
101 typedef std::map<int64, Operation> OperationMap; 104 typedef std::map<int64, Operation> OperationMap;
(...skipping 10 matching lines...) Expand all
112 115
113 // Stores type-specific extra data per-ID. 116 // Stores type-specific extra data per-ID.
114 ExtraDataMap extra_data_; 117 ExtraDataMap extra_data_;
115 118
116 DISALLOW_COPY_AND_ASSIGN(ChangeReorderBuffer); 119 DISALLOW_COPY_AND_ASSIGN(ChangeReorderBuffer);
117 }; 120 };
118 121
119 } // namespace sync_api 122 } // namespace sync_api
120 123
121 #endif // CHROME_BROWSER_SYNC_INTERNAL_API_CHANGE_REORDER_BUFFER_H_ 124 #endif // CHROME_BROWSER_SYNC_INTERNAL_API_CHANGE_REORDER_BUFFER_H_
OLDNEW
« no previous file with comments | « chrome/browser/sync/internal_api/base_node.cc ('k') | chrome/browser/sync/internal_api/change_reorder_buffer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698