Index: net/disk_cache/backend_impl.h |
=================================================================== |
--- net/disk_cache/backend_impl.h (revision 19788) |
+++ net/disk_cache/backend_impl.h (working copy) |
@@ -7,6 +7,7 @@ |
#ifndef NET_DISK_CACHE_BACKEND_IMPL_H_ |
#define NET_DISK_CACHE_BACKEND_IMPL_H_ |
+#include "base/hash_tables.h" |
#include "base/timer.h" |
#include "net/disk_cache/block_files.h" |
#include "net/disk_cache/disk_cache.h" |
@@ -99,10 +100,15 @@ |
void RemoveEntry(EntryImpl* entry); |
// This method must be called whenever an entry is released for the last time. |
- void CacheEntryDestroyed(); |
+ // |address| is the cache address of the entry. |
+ void CacheEntryDestroyed(Addr address); |
+ // Returns true if the data stored by the provided |rankings| points to an |
+ // open entry, false otherwise. |
+ bool IsOpen(CacheRankingsBlock* rankings) const; |
+ |
// Returns the id being used on this run of the cache. |
- int32 GetCurrentEntryId(); |
+ int32 GetCurrentEntryId() const; |
// Returns the maximum size for a file to reside on the cache. |
int MaxFileSize() const; |
@@ -169,6 +175,8 @@ |
bool OpenPrevEntry(void** iter, Entry** prev_entry); |
private: |
+ typedef base::hash_map<CacheAddr, EntryImpl*> EntriesMap; |
+ |
// Creates a new backing file for the cache index. |
bool CreateBackingStore(disk_cache::File* file); |
bool InitBackingStore(bool* file_created); |
@@ -241,6 +249,7 @@ |
uint32 mask_; // Binary mask to map a hash to the hash table. |
int32 max_size_; // Maximum data size for this instance. |
Eviction eviction_; // Handler of the eviction algorithm. |
+ EntriesMap open_entries_; // Map of open entries. |
int num_refs_; // Number of referenced cache entries. |
int max_refs_; // Max number of referenced cache entries. |
int num_pending_io_; // Number of pending IO operations. |