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 |