Index: net/disk_cache/simple/simple_index.h |
diff --git a/net/disk_cache/simple/simple_index.h b/net/disk_cache/simple/simple_index.h |
index 76cf55ff5df6e51e09aad04bc60d82f0856624e6..d628b3cab8b3a628669ea740bcfb23bf2bc7f8ba 100644 |
--- a/net/disk_cache/simple/simple_index.h |
+++ b/net/disk_cache/simple/simple_index.h |
@@ -16,6 +16,7 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/memory/weak_ptr.h" |
#include "base/time.h" |
+#include "base/timer.h" |
#include "net/base/net_export.h" |
class Pickle; |
@@ -103,7 +104,10 @@ class NET_EXPORT_PRIVATE SimpleIndex |
EntrySet* entry_set); |
private: |
- typedef base::Callback<void(scoped_ptr<EntrySet>)> IndexCompletionCallback; |
+ typedef base::Callback<void(scoped_ptr<EntrySet>, bool force_index_flush)> |
+ IndexCompletionCallback; |
+ |
+ void PostponeWritingToDisk(); |
static void LoadFromDisk( |
const base::FilePath& index_filename, |
@@ -118,7 +122,8 @@ class NET_EXPORT_PRIVATE SimpleIndex |
scoped_ptr<Pickle> pickle); |
// Must run on IO Thread. |
- void MergeInitializingSet(scoped_ptr<EntrySet> index_file_entries); |
+ void MergeInitializingSet(scoped_ptr<EntrySet> index_file_entries, |
+ bool force_index_flush); |
EntrySet entries_set_; |
uint64 cache_size_; // Total cache storage size in bytes. |
@@ -136,6 +141,12 @@ class NET_EXPORT_PRIVATE SimpleIndex |
// All nonstatic SimpleEntryImpl methods should always be called on the IO |
// thread, in all cases. |io_thread_checker_| documents and enforces this. |
base::ThreadChecker io_thread_checker_; |
+ |
+ // Timestamp of the last time we wrote the index to disk. |
+ // PostponeWritingToDisk() may give up postponing and allow the write if it |
+ // has been a while since last time we wrote. |
+ base::Time last_write_to_disk_; |
+ base::OneShotTimer<SimpleIndex> write_to_disk_timer_; |
}; |
} // namespace disk_cache |