diff options
author | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-23 18:47:25 +0000 |
---|---|---|
committer | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-23 18:47:25 +0000 |
commit | e1fcf1482fd306b7e404ed037106801840deda76 (patch) | |
tree | d5d26cf73f30a254aecca16dfba4f6f5e9bdba4c /net/disk_cache/backend_impl.h | |
parent | 8e3e066579460f88a19e2e6e091c396f3bd851c3 (diff) | |
download | chromium_src-e1fcf1482fd306b7e404ed037106801840deda76.zip chromium_src-e1fcf1482fd306b7e404ed037106801840deda76.tar.gz chromium_src-e1fcf1482fd306b7e404ed037106801840deda76.tar.bz2 |
Disk cache: Extend the internal buffering performed by each entry
to cover external files.
We now keep a variable-size buffer and use it even after we
know that the data is not going to be stored by a block-file.
The backend keeps track of the total memory used by all entries
and prevents that value from going over a max value that
depends on the total memory available.
This CL removes the tests that were checking the synchronous
operation of sparse IO because that model is no longer supported
by the public API, and this CL would add complexity to them
(they fail due to thread safety concerns).
BUG=6626
TEST=net_unittests
Review URL: http://codereview.chromium.org/3167020
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57082 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/disk_cache/backend_impl.h')
-rw-r--r-- | net/disk_cache/backend_impl.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/net/disk_cache/backend_impl.h b/net/disk_cache/backend_impl.h index f64f3c8..24af0b4 100644 --- a/net/disk_cache/backend_impl.h +++ b/net/disk_cache/backend_impl.h @@ -175,6 +175,17 @@ class BackendImpl : public Backend { // Logs requests that are denied due to being too big. void TooMuchStorageRequested(int32 size); + // Returns true if a temporary buffer is allowed to be extended. + bool IsAllocAllowed(int current_size, int new_size); + + // Tracks the release of |size| bytes by an entry buffer. + void BufferDeleted(int size); + + // Only intended for testing the two previous methods. + int GetTotalBuffersSize() const { + return buffer_bytes_; + } + // Returns true if this instance seems to be under heavy load. bool IsLoaded() const; @@ -314,6 +325,9 @@ class BackendImpl : public Backend { // Part of the self test. Returns false if the entry is corrupt. bool CheckEntry(EntryImpl* cache_entry); + // Returns the maximum total memory for the memory buffers. + int MaxBuffersSize(); + InFlightBackendIO background_queue_; // The controller of pending operations. scoped_refptr<MappedFile> index_; // The main cache index. FilePath path_; // Path to the folder used as backing storage. @@ -329,6 +343,7 @@ class BackendImpl : public Backend { int num_pending_io_; // Number of pending IO operations. int entry_count_; // Number of entries accessed lately. int byte_count_; // Number of bytes read/written lately. + int buffer_bytes_; // Total size of the temporary entries' buffers. net::CacheType cache_type_; int uma_report_; // Controls transmision of UMA data. uint32 user_flags_; // Flags set by the user. |