Index: net/disk_cache/blockfile/backend_impl_v3.cc |
diff --git a/net/disk_cache/blockfile/backend_impl_v3.cc b/net/disk_cache/blockfile/backend_impl_v3.cc |
index 9a7cff1c79000c8e9e41f9f7728da3bf025cc680..b44b1950abc9205b0d67bd3ff55533d8f0543442 100644 |
--- a/net/disk_cache/blockfile/backend_impl_v3.cc |
+++ b/net/disk_cache/blockfile/backend_impl_v3.cc |
@@ -660,17 +660,27 @@ int BackendImplV3::DoomEntriesSince(base::Time initial_time, |
} |
} |
-int BackendImplV3::OpenNextEntry(void** iter, Entry** next_entry, |
- const CompletionCallback& callback) { |
- DCHECK(!callback.is_null()); |
- background_queue_.OpenNextEntry(iter, next_entry, callback); |
- return net::ERR_IO_PENDING; |
-} |
+class BackendImplV3::IteratorImpl : public Backend::Iterator { |
+ public: |
+ explicit IteratorImpl(base::WeakPtr<InFlightBackendIO> background_queue) |
+ : background_queue_(background_queue), data_(NULL) { |
+ } |
+ |
+ virtual int OpenNextEntry(Entry** next_entry, |
+ const net::CompletionCallback& callback) OVERRIDE { |
+ if (!background_queue_) |
+ return net::ERR_FAILED; |
+ background_queue_->OpenNextEntry(&data_, next_entry, callback); |
+ return net::ERR_IO_PENDING; |
+ } |
-void BackendImplV3::EndEnumeration(void** iter) { |
- scoped_ptr<IndexIterator> iterator( |
- reinterpret_cast<IndexIterator*>(*iter)); |
- *iter = NULL; |
+ private: |
+ const base::WeakPtr<InFlightBackendIO> background_queue_; |
+ void* data_; |
+}; |
+ |
+scoped_ptr<Backend::Iterator> BackendImplV3::CreateIterator() { |
+ return scoped_ptr<Backend::Iterator>(new IteratorImpl(GetBackgroundQueue())); |
} |
void BackendImplV3::GetStats(StatsItems* stats) { |
@@ -1497,13 +1507,17 @@ int BackendImplV3::DoomEntriesSince(base::Time initial_time, |
return net::ERR_FAILED; |
} |
-int BackendImplV3::OpenNextEntry(void** iter, Entry** next_entry, |
- const CompletionCallback& callback) { |
- return net::ERR_FAILED; |
-} |
-void BackendImplV3::EndEnumeration(void** iter) { |
- NOTIMPLEMENTED(); |
+class BackendImplV3::NotImplementedIterator : public Backend::Iterator { |
+ public: |
+ virtual int OpenNextEntry(disk_cache::Entry** next_entry, |
+ const net::CompletionCallback& callback) OVERRIDE { |
+ return net::ERR_NOT_IMPLEMENTED; |
+ } |
+}; |
+ |
+scoped_ptr<Backend::Iterator> BackendImplV3::CreateIterator() { |
+ return scoped_ptr<Iterator>(new NotImplementedIterator()); |
} |
void BackendImplV3::GetStats(StatsItems* stats) { |