OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 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 | 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 #ifndef COMPONENTS_SYNC_SYNCABLE_ENTRY_KERNEL_H_ | 5 #ifndef COMPONENTS_SYNC_SYNCABLE_ENTRY_KERNEL_H_ |
6 #define COMPONENTS_SYNC_SYNCABLE_ENTRY_KERNEL_H_ | 6 #define COMPONENTS_SYNC_SYNCABLE_ENTRY_KERNEL_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 | 218 |
219 // Set the dirty bit, and optionally add this entry's metahandle to | 219 // Set the dirty bit, and optionally add this entry's metahandle to |
220 // a provided index on dirty bits in |dirty_index|. Parameter may be null, | 220 // a provided index on dirty bits in |dirty_index|. Parameter may be null, |
221 // and will result only in setting the dirty bit of this entry. | 221 // and will result only in setting the dirty bit of this entry. |
222 inline void mark_dirty(syncable::MetahandleSet* dirty_index) { | 222 inline void mark_dirty(syncable::MetahandleSet* dirty_index) { |
223 if (!dirty_ && dirty_index) { | 223 if (!dirty_ && dirty_index) { |
224 DCHECK_NE(0, ref(META_HANDLE)); | 224 DCHECK_NE(0, ref(META_HANDLE)); |
225 dirty_index->insert(ref(META_HANDLE)); | 225 dirty_index->insert(ref(META_HANDLE)); |
226 } | 226 } |
227 dirty_ = true; | 227 dirty_ = true; |
| 228 memory_usage_ = kMemoryUsageUnknown; |
228 } | 229 } |
229 | 230 |
230 // Clear the dirty bit, and optionally remove this entry's metahandle from | 231 // Clear the dirty bit, and optionally remove this entry's metahandle from |
231 // a provided index on dirty bits in |dirty_index|. Parameter may be null, | 232 // a provided index on dirty bits in |dirty_index|. Parameter may be null, |
232 // and will result only in clearing dirty bit of this entry. | 233 // and will result only in clearing dirty bit of this entry. |
233 inline void clear_dirty(syncable::MetahandleSet* dirty_index) { | 234 inline void clear_dirty(syncable::MetahandleSet* dirty_index) { |
234 if (dirty_ && dirty_index) { | 235 if (dirty_ && dirty_index) { |
235 DCHECK_NE(0, ref(META_HANDLE)); | 236 DCHECK_NE(0, ref(META_HANDLE)); |
236 dirty_index->erase(ref(META_HANDLE)); | 237 dirty_index->erase(ref(META_HANDLE)); |
237 } | 238 } |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
370 bool ShouldMaintainPosition() const; | 371 bool ShouldMaintainPosition() const; |
371 bool ShouldMaintainHierarchy() const; | 372 bool ShouldMaintainHierarchy() const; |
372 | 373 |
373 // Dumps all kernel info into a DictionaryValue and returns it. | 374 // Dumps all kernel info into a DictionaryValue and returns it. |
374 // Transfers ownership of the DictionaryValue to the caller. | 375 // Transfers ownership of the DictionaryValue to the caller. |
375 // Note: |cryptographer| is an optional parameter for use in decrypting | 376 // Note: |cryptographer| is an optional parameter for use in decrypting |
376 // encrypted specifics. If it is NULL or the specifics are not decryptsble, | 377 // encrypted specifics. If it is NULL or the specifics are not decryptsble, |
377 // they will be serialized as empty proto's. | 378 // they will be serialized as empty proto's. |
378 base::DictionaryValue* ToValue(Cryptographer* cryptographer) const; | 379 base::DictionaryValue* ToValue(Cryptographer* cryptographer) const; |
379 | 380 |
| 381 size_t EstimateMemoryUsage() const; |
| 382 |
380 private: | 383 private: |
381 // Tracks whether this entry needs to be saved to the database. | 384 // Tracks whether this entry needs to be saved to the database. |
382 bool dirty_; | 385 bool dirty_; |
| 386 mutable size_t memory_usage_; |
| 387 constexpr static size_t kMemoryUsageUnknown = -1; |
383 }; | 388 }; |
384 | 389 |
385 template <typename T> | 390 template <typename T> |
386 class EntryKernelLessByMetaHandle { | 391 class EntryKernelLessByMetaHandle { |
387 public: | 392 public: |
388 inline bool operator()(T a, T b) const { | 393 inline bool operator()(T a, T b) const { |
389 return a->ref(META_HANDLE) < b->ref(META_HANDLE); | 394 return a->ref(META_HANDLE) < b->ref(META_HANDLE); |
390 } | 395 } |
391 }; | 396 }; |
392 | 397 |
(...skipping 19 matching lines...) Expand all Loading... |
412 | 417 |
413 std::unique_ptr<base::ListValue> EntryKernelMutationMapToValue( | 418 std::unique_ptr<base::ListValue> EntryKernelMutationMapToValue( |
414 const EntryKernelMutationMap& mutations); | 419 const EntryKernelMutationMap& mutations); |
415 | 420 |
416 std::ostream& operator<<(std::ostream& os, const EntryKernel& entry_kernel); | 421 std::ostream& operator<<(std::ostream& os, const EntryKernel& entry_kernel); |
417 | 422 |
418 } // namespace syncable | 423 } // namespace syncable |
419 } // namespace syncer | 424 } // namespace syncer |
420 | 425 |
421 #endif // COMPONENTS_SYNC_SYNCABLE_ENTRY_KERNEL_H_ | 426 #endif // COMPONENTS_SYNC_SYNCABLE_ENTRY_KERNEL_H_ |
OLD | NEW |