| Index: net/disk_cache/v3/eviction_v3.h
|
| ===================================================================
|
| --- net/disk_cache/v3/eviction_v3.h (revision 232523)
|
| +++ net/disk_cache/v3/eviction_v3.h (working copy)
|
| @@ -2,37 +2,41 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef NET_DISK_CACHE_EVICTION_H_
|
| -#define NET_DISK_CACHE_EVICTION_H_
|
| +#ifndef NET_DISK_CACHE_V3_EVICTION_V3_H_
|
| +#define NET_DISK_CACHE_V3_EVICTION_V3_H_
|
|
|
| #include "base/basictypes.h"
|
| #include "base/memory/weak_ptr.h"
|
| -#include "net/disk_cache/disk_format.h"
|
| -#include "net/disk_cache/rankings.h"
|
| +#include "net/base/completion_callback.h"
|
| +#include "net/disk_cache/v3/disk_format_v3.h"
|
| +#include "net/disk_cache/v3/index_table.h"
|
|
|
| namespace disk_cache {
|
|
|
| -class BackendImpl;
|
| -class EntryImpl;
|
| +class BackendImplV3;
|
| +class EntryImplV3;
|
|
|
| // This class implements the eviction algorithm for the cache and it is tightly
|
| // integrated with BackendImpl.
|
| -class Eviction {
|
| +class EvictionV3 {
|
| public:
|
| - Eviction();
|
| - ~Eviction();
|
| + EvictionV3();
|
| + ~EvictionV3();
|
|
|
| - void Init(BackendImpl* backend);
|
| + void Init(BackendImplV3* backend);
|
| void Stop();
|
|
|
| // Deletes entries from the cache until the current size is below the limit.
|
| // If empty is true, the whole cache will be trimmed, regardless of being in
|
| // use.
|
| - void TrimCache(bool empty);
|
| + void TrimCache();
|
| + int TrimAllCache(const net::CompletionCallback& callback);
|
|
|
| // Notifications of interesting events for a given entry.
|
| - void OnOpenEntry(EntryImpl* entry);
|
| - void OnCreateEntry(EntryImpl* entry);
|
| + void OnOpenEntry(EntryImplV3* entry);
|
| + void OnCreateEntry(EntryImplV3* entry);
|
| + void OnResurrectEntry(EntryImplV3* entry);
|
| + void OnEvictEntryComplete();
|
|
|
| // Testing interface.
|
| void SetTestMode();
|
| @@ -43,32 +47,41 @@
|
| void DelayedTrim();
|
| bool ShouldTrim();
|
| bool ShouldTrimDeleted();
|
| - bool EvictEntry(CacheRankingsBlock* node, bool empty, Rankings::List list);
|
| + int EvictEntry(uint32 hash, Addr address);
|
|
|
| - void TrimCacheV2(bool empty);
|
| + // Returns false when done trimming the cache.
|
| + bool TrimCacheImpl();
|
| void TrimDeleted(bool empty);
|
|
|
| - bool NodeIsOldEnough(CacheRankingsBlock* node, int list);
|
| - int SelectListByLength(Rankings::ScopedRankingsBlock* next);
|
| - void ReportListStats();
|
| + int GetTimestampForGoup(int group);
|
|
|
| - BackendImpl* backend_;
|
| - Rankings* rankings_;
|
| - IndexHeader* header_;
|
| + bool EvictionV3::CellIsOldEnough(const CellList& cells, int multiplier);
|
| + EntryGroup SelectListByLength();
|
| + void ReportListStats(int time1, int time2, int time3);
|
| +
|
| + BackendImplV3* backend_;
|
| + IndexTable* index_;
|
| + IndexHeaderV3* header_;
|
| int max_size_;
|
| int trim_delays_;
|
| int index_size_;
|
| - bool new_eviction_;
|
| + bool lru_;
|
| bool first_trim_;
|
| bool trimming_;
|
| bool delay_trim_;
|
| bool init_;
|
| bool test_mode_;
|
| - base::WeakPtrFactory<Eviction> ptr_factory_;
|
| + bool empty_;
|
| + base::WeakPtrFactory<EvictionV3> ptr_factory_;
|
| + CellList no_use_cells_;
|
| + CellList low_use_cells_;
|
| + CellList high_use_cells_;
|
| + CellList* cells_to_evict_;
|
| + net::CompletionCallback callback_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(Eviction);
|
| + DISALLOW_COPY_AND_ASSIGN(EvictionV3);
|
| };
|
|
|
| } // namespace disk_cache
|
|
|
| -#endif // NET_DISK_CACHE_EVICTION_H_
|
| +#endif // NET_DISK_CACHE_V3_EVICTION_V3_H_
|
|
|