| Index: net/disk_cache/blockfile/backend_impl.h
|
| diff --git a/net/disk_cache/blockfile/backend_impl.h b/net/disk_cache/blockfile/backend_impl.h
|
| index e2304ffdcd1339e1a493161b5e502c437f7d9937..1abc66dae8e84703b039bc8b94d5e3bb7c0876a6 100644
|
| --- a/net/disk_cache/blockfile/backend_impl.h
|
| +++ b/net/disk_cache/blockfile/backend_impl.h
|
| @@ -74,14 +74,14 @@ class NET_EXPORT_PRIVATE BackendImpl : public Backend {
|
| int SyncDoomEntriesBetween(base::Time initial_time,
|
| base::Time end_time);
|
| int SyncDoomEntriesSince(base::Time initial_time);
|
| - int SyncOpenNextEntry(void** iter, Entry** next_entry);
|
| - void SyncEndEnumeration(void* iter);
|
| + int SyncOpenNextEntry(Rankings::Iterator* iterator, Entry** next_entry);
|
| + void SyncEndEnumeration(scoped_ptr<Rankings::Iterator> iterator);
|
| void SyncOnExternalCacheHit(const std::string& key);
|
|
|
| // Open or create an entry for the given |key| or |iter|.
|
| EntryImpl* OpenEntryImpl(const std::string& key);
|
| EntryImpl* CreateEntryImpl(const std::string& key);
|
| - EntryImpl* OpenNextEntryImpl(void** iter);
|
| + EntryImpl* OpenNextEntryImpl(Rankings::Iterator* iter);
|
|
|
| // Sets the maximum size for the total amount of data stored by this instance.
|
| bool SetMaxSize(int max_bytes);
|
| @@ -273,14 +273,21 @@ class NET_EXPORT_PRIVATE BackendImpl : public Backend {
|
| const CompletionCallback& callback) OVERRIDE;
|
| virtual int DoomEntriesSince(base::Time initial_time,
|
| const CompletionCallback& callback) OVERRIDE;
|
| - virtual int OpenNextEntry(void** iter, Entry** next_entry,
|
| - const CompletionCallback& callback) OVERRIDE;
|
| - virtual void EndEnumeration(void** iter) OVERRIDE;
|
| + // NOTE: The blockfile Backend::Iterator::OpenNextEntry method does not modify
|
| + // the last_used field of the entry, and therefore it does not impact the
|
| + // eviction ranking of the entry. However, an enumeration will go through all
|
| + // entries on the cache only if the cache is not modified while the
|
| + // enumeration is taking place. Significantly altering the entry pointed by
|
| + // the iterator (for example, deleting the entry) will invalidate the
|
| + // iterator. Performing operations on an entry that modify the entry may
|
| + // result in loops in the iteration, skipped entries or similar.
|
| + virtual scoped_ptr<Iterator> CreateIterator() OVERRIDE;
|
| virtual void GetStats(StatsItems* stats) OVERRIDE;
|
| virtual void OnExternalCacheHit(const std::string& key) OVERRIDE;
|
|
|
| private:
|
| typedef base::hash_map<CacheAddr, EntryImpl*> EntriesMap;
|
| + class IteratorImpl;
|
|
|
| // Creates a new backing file for the cache index.
|
| bool CreateBackingStore(disk_cache::File* file);
|
|
|