| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/disk_cache/blockfile/backend_impl.h" | 5 #include "net/disk_cache/blockfile/backend_impl.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <utility> |
| 8 | 9 |
| 9 #include "base/bind.h" | 10 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 11 #include "base/bind_helpers.h" |
| 11 #include "base/files/file.h" | 12 #include "base/files/file.h" |
| 12 #include "base/files/file_path.h" | 13 #include "base/files/file_path.h" |
| 13 #include "base/files/file_util.h" | 14 #include "base/files/file_util.h" |
| 14 #include "base/hash.h" | 15 #include "base/hash.h" |
| 15 #include "base/location.h" | 16 #include "base/location.h" |
| 16 #include "base/metrics/field_trial.h" | 17 #include "base/metrics/field_trial.h" |
| 17 #include "base/metrics/histogram.h" | 18 #include "base/metrics/histogram.h" |
| (...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 395 node = next; | 396 node = next; |
| 396 next = OpenNextEntryImpl(iterator.get()); | 397 next = OpenNextEntryImpl(iterator.get()); |
| 397 | 398 |
| 398 if (node->GetLastUsed() >= initial_time && | 399 if (node->GetLastUsed() >= initial_time && |
| 399 node->GetLastUsed() < end_time) { | 400 node->GetLastUsed() < end_time) { |
| 400 node->DoomImpl(); | 401 node->DoomImpl(); |
| 401 } else if (node->GetLastUsed() < initial_time) { | 402 } else if (node->GetLastUsed() < initial_time) { |
| 402 if (next) | 403 if (next) |
| 403 next->Release(); | 404 next->Release(); |
| 404 next = NULL; | 405 next = NULL; |
| 405 SyncEndEnumeration(iterator.Pass()); | 406 SyncEndEnumeration(std::move(iterator)); |
| 406 } | 407 } |
| 407 | 408 |
| 408 node->Release(); | 409 node->Release(); |
| 409 } | 410 } |
| 410 | 411 |
| 411 return net::OK; | 412 return net::OK; |
| 412 } | 413 } |
| 413 | 414 |
| 414 int BackendImpl::SyncCalculateSizeOfAllEntries() { | 415 int BackendImpl::SyncCalculateSizeOfAllEntries() { |
| 415 DCHECK_NE(net::APP_CACHE, cache_type_); | 416 DCHECK_NE(net::APP_CACHE, cache_type_); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 428 | 429 |
| 429 stats_.OnEvent(Stats::DOOM_RECENT); | 430 stats_.OnEvent(Stats::DOOM_RECENT); |
| 430 for (;;) { | 431 for (;;) { |
| 431 scoped_ptr<Rankings::Iterator> iterator(new Rankings::Iterator()); | 432 scoped_ptr<Rankings::Iterator> iterator(new Rankings::Iterator()); |
| 432 EntryImpl* entry = OpenNextEntryImpl(iterator.get()); | 433 EntryImpl* entry = OpenNextEntryImpl(iterator.get()); |
| 433 if (!entry) | 434 if (!entry) |
| 434 return net::OK; | 435 return net::OK; |
| 435 | 436 |
| 436 if (initial_time > entry->GetLastUsed()) { | 437 if (initial_time > entry->GetLastUsed()) { |
| 437 entry->Release(); | 438 entry->Release(); |
| 438 SyncEndEnumeration(iterator.Pass()); | 439 SyncEndEnumeration(std::move(iterator)); |
| 439 return net::OK; | 440 return net::OK; |
| 440 } | 441 } |
| 441 | 442 |
| 442 entry->DoomImpl(); | 443 entry->DoomImpl(); |
| 443 entry->Release(); | 444 entry->Release(); |
| 444 SyncEndEnumeration(iterator.Pass()); // The doom invalidated the iterator. | 445 SyncEndEnumeration( |
| 446 std::move(iterator)); // The doom invalidated the iterator. |
| 445 } | 447 } |
| 446 } | 448 } |
| 447 | 449 |
| 448 int BackendImpl::SyncOpenNextEntry(Rankings::Iterator* iterator, | 450 int BackendImpl::SyncOpenNextEntry(Rankings::Iterator* iterator, |
| 449 Entry** next_entry) { | 451 Entry** next_entry) { |
| 450 *next_entry = OpenNextEntryImpl(iterator); | 452 *next_entry = OpenNextEntryImpl(iterator); |
| 451 return (*next_entry) ? net::OK : net::ERR_FAILED; | 453 return (*next_entry) ? net::OK : net::ERR_FAILED; |
| 452 } | 454 } |
| 453 | 455 |
| 454 void BackendImpl::SyncEndEnumeration(scoped_ptr<Rankings::Iterator> iterator) { | 456 void BackendImpl::SyncEndEnumeration(scoped_ptr<Rankings::Iterator> iterator) { |
| (...skipping 819 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1274 | 1276 |
| 1275 class BackendImpl::IteratorImpl : public Backend::Iterator { | 1277 class BackendImpl::IteratorImpl : public Backend::Iterator { |
| 1276 public: | 1278 public: |
| 1277 explicit IteratorImpl(base::WeakPtr<InFlightBackendIO> background_queue) | 1279 explicit IteratorImpl(base::WeakPtr<InFlightBackendIO> background_queue) |
| 1278 : background_queue_(background_queue), | 1280 : background_queue_(background_queue), |
| 1279 iterator_(new Rankings::Iterator()) { | 1281 iterator_(new Rankings::Iterator()) { |
| 1280 } | 1282 } |
| 1281 | 1283 |
| 1282 ~IteratorImpl() override { | 1284 ~IteratorImpl() override { |
| 1283 if (background_queue_) | 1285 if (background_queue_) |
| 1284 background_queue_->EndEnumeration(iterator_.Pass()); | 1286 background_queue_->EndEnumeration(std::move(iterator_)); |
| 1285 } | 1287 } |
| 1286 | 1288 |
| 1287 int OpenNextEntry(Entry** next_entry, | 1289 int OpenNextEntry(Entry** next_entry, |
| 1288 const net::CompletionCallback& callback) override { | 1290 const net::CompletionCallback& callback) override { |
| 1289 if (!background_queue_) | 1291 if (!background_queue_) |
| 1290 return net::ERR_FAILED; | 1292 return net::ERR_FAILED; |
| 1291 background_queue_->OpenNextEntry(iterator_.get(), next_entry, callback); | 1293 background_queue_->OpenNextEntry(iterator_.get(), next_entry, callback); |
| 1292 return net::ERR_IO_PENDING; | 1294 return net::ERR_IO_PENDING; |
| 1293 } | 1295 } |
| 1294 | 1296 |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1364 | 1366 |
| 1365 int flags = base::File::FLAG_READ | base::File::FLAG_WRITE | | 1367 int flags = base::File::FLAG_READ | base::File::FLAG_WRITE | |
| 1366 base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_EXCLUSIVE_WRITE; | 1368 base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_EXCLUSIVE_WRITE; |
| 1367 base::File base_file(index_name, flags); | 1369 base::File base_file(index_name, flags); |
| 1368 if (!base_file.IsValid()) | 1370 if (!base_file.IsValid()) |
| 1369 return false; | 1371 return false; |
| 1370 | 1372 |
| 1371 bool ret = true; | 1373 bool ret = true; |
| 1372 *file_created = base_file.created(); | 1374 *file_created = base_file.created(); |
| 1373 | 1375 |
| 1374 scoped_refptr<disk_cache::File> file(new disk_cache::File(base_file.Pass())); | 1376 scoped_refptr<disk_cache::File> file( |
| 1377 new disk_cache::File(std::move(base_file))); |
| 1375 if (*file_created) | 1378 if (*file_created) |
| 1376 ret = CreateBackingStore(file.get()); | 1379 ret = CreateBackingStore(file.get()); |
| 1377 | 1380 |
| 1378 file = NULL; | 1381 file = NULL; |
| 1379 if (!ret) | 1382 if (!ret) |
| 1380 return false; | 1383 return false; |
| 1381 | 1384 |
| 1382 index_ = new MappedFile(); | 1385 index_ = new MappedFile(); |
| 1383 data_ = static_cast<Index*>(index_->Init(index_name, 0)); | 1386 data_ = static_cast<Index*>(index_->Init(index_name, 0)); |
| 1384 if (!data_) { | 1387 if (!data_) { |
| (...skipping 726 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2111 if (total_memory > kMaxBuffersSize || total_memory <= 0) | 2114 if (total_memory > kMaxBuffersSize || total_memory <= 0) |
| 2112 total_memory = kMaxBuffersSize; | 2115 total_memory = kMaxBuffersSize; |
| 2113 | 2116 |
| 2114 done = true; | 2117 done = true; |
| 2115 } | 2118 } |
| 2116 | 2119 |
| 2117 return static_cast<int>(total_memory); | 2120 return static_cast<int>(total_memory); |
| 2118 } | 2121 } |
| 2119 | 2122 |
| 2120 } // namespace disk_cache | 2123 } // namespace disk_cache |
| OLD | NEW |