Chromium Code Reviews| Index: net/disk_cache/blockfile/mapped_file.cc |
| diff --git a/net/disk_cache/blockfile/mapped_file.cc b/net/disk_cache/blockfile/mapped_file.cc |
| index 4b0f27fc0972da59294c07d0bb6b45c7575a7e9d..9c931a5fd114aea94d72f8003174222bef680bc9 100644 |
| --- a/net/disk_cache/blockfile/mapped_file.cc |
| +++ b/net/disk_cache/blockfile/mapped_file.cc |
| @@ -4,6 +4,10 @@ |
| #include "net/disk_cache/blockfile/mapped_file.h" |
| +#include <algorithm> |
| + |
| +#include "base/memory/scoped_ptr.h" |
| + |
| namespace disk_cache { |
| // Note: Most of this class is implemented in platform-specific files. |
| @@ -32,4 +36,19 @@ bool MappedFile::Store(const FileBlock* block, |
| return Write(block->buffer(), block->size(), offset, callback, completed); |
| } |
| +bool MappedFile::Preload() { |
| + static const size_t kPreloadBufferSize = 16384; |
|
rvargas (doing something else)
2014/03/20 19:05:19
The files have a limited size... the index is at m
|
| + size_t file_len = GetLength(); |
| + size_t left_to_read = file_len; |
| + scoped_ptr<char[]> buf(new char[kPreloadBufferSize]); |
| + while (left_to_read > 0) { |
| + size_t to_read = std::min(kPreloadBufferSize, left_to_read); |
| + size_t offset = file_len - left_to_read; |
| + if (!Read(buf.get(), to_read, offset)) { |
| + return false; |
| + } |
| + left_to_read -= to_read; |
| + } |
| + return true; |
| +} |
| } // namespace disk_cache |