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_v3.h" | 5 #include "net/disk_cache/blockfile/backend_impl_v3.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 667 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
678 return net::ERR_FAILED; | 678 return net::ERR_FAILED; |
679 background_queue_->OpenNextEntry(&data_, next_entry, callback); | 679 background_queue_->OpenNextEntry(&data_, next_entry, callback); |
680 return net::ERR_IO_PENDING; | 680 return net::ERR_IO_PENDING; |
681 } | 681 } |
682 | 682 |
683 private: | 683 private: |
684 const base::WeakPtr<InFlightBackendIO> background_queue_; | 684 const base::WeakPtr<InFlightBackendIO> background_queue_; |
685 void* data_; | 685 void* data_; |
686 }; | 686 }; |
687 | 687 |
688 scoped_ptr<Backend::Iterator> BackendImplV3::CreateIterator() { | 688 std::unique_ptr<Backend::Iterator> BackendImplV3::CreateIterator() { |
689 return scoped_ptr<Backend::Iterator>(new IteratorImpl(GetBackgroundQueue())); | 689 return std::unique_ptr<Backend::Iterator>( |
| 690 new IteratorImpl(GetBackgroundQueue())); |
690 } | 691 } |
691 | 692 |
692 void BackendImplV3::GetStats(StatsItems* stats) { | 693 void BackendImplV3::GetStats(StatsItems* stats) { |
693 if (disabled_) | 694 if (disabled_) |
694 return; | 695 return; |
695 | 696 |
696 std::pair<std::string, std::string> item; | 697 std::pair<std::string, std::string> item; |
697 | 698 |
698 item.first = "Entries"; | 699 item.first = "Entries"; |
699 item.second = base::IntToString(data_->header.num_entries); | 700 item.second = base::IntToString(data_->header.num_entries); |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
788 NOTREACHED(); | 789 NOTREACHED(); |
789 return false; | 790 return false; |
790 } | 791 } |
791 | 792 |
792 // Load the required data. | 793 // Load the required data. |
793 size = address.num_blocks() * address.BlockSize(); | 794 size = address.num_blocks() * address.BlockSize(); |
794 MappedFile* file = File(address); | 795 MappedFile* file = File(address); |
795 if (!file) | 796 if (!file) |
796 return false; | 797 return false; |
797 | 798 |
798 scoped_ptr<char[]> data(new char[size]); | 799 std::unique_ptr<char[]> data(new char[size]); |
799 size_t offset = address.start_block() * address.BlockSize() + | 800 size_t offset = address.start_block() * address.BlockSize() + |
800 kBlockHeaderSize; | 801 kBlockHeaderSize; |
801 if (!file->Read(data.get(), size, offset)) | 802 if (!file->Read(data.get(), size, offset)) |
802 return false; | 803 return false; |
803 | 804 |
804 if (!stats_.Init(data.get(), size, address)) | 805 if (!stats_.Init(data.get(), size, address)) |
805 return false; | 806 return false; |
806 if (cache_type_ == net::DISK_CACHE && ShouldReportAgain()) | 807 if (cache_type_ == net::DISK_CACHE && ShouldReportAgain()) |
807 stats_.InitSizeHistogram(); | 808 stats_.InitSizeHistogram(); |
808 return true; | 809 return true; |
809 } | 810 } |
810 | 811 |
811 void BackendImplV3::StoreStats() { | 812 void BackendImplV3::StoreStats() { |
812 int size = stats_.StorageSize(); | 813 int size = stats_.StorageSize(); |
813 scoped_ptr<char[]> data(new char[size]); | 814 std::unique_ptr<char[]> data(new char[size]); |
814 Addr address; | 815 Addr address; |
815 size = stats_.SerializeStats(data.get(), size, &address); | 816 size = stats_.SerializeStats(data.get(), size, &address); |
816 DCHECK(size); | 817 DCHECK(size); |
817 if (!address.is_initialized()) | 818 if (!address.is_initialized()) |
818 return; | 819 return; |
819 | 820 |
820 MappedFile* file = File(address); | 821 MappedFile* file = File(address); |
821 if (!file) | 822 if (!file) |
822 return; | 823 return; |
823 | 824 |
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1382 | 1383 |
1383 if (data_->header.num_entries < 0) { | 1384 if (data_->header.num_entries < 0) { |
1384 LOG(ERROR) << "Invalid number of entries"; | 1385 LOG(ERROR) << "Invalid number of entries"; |
1385 return false; | 1386 return false; |
1386 } | 1387 } |
1387 | 1388 |
1388 if (!mask_) | 1389 if (!mask_) |
1389 mask_ = data_->header.table_len - 1; | 1390 mask_ = data_->header.table_len - 1; |
1390 | 1391 |
1391 // Load the table into memory with a single read. | 1392 // Load the table into memory with a single read. |
1392 scoped_ptr<char[]> buf(new char[current_size]); | 1393 std::unique_ptr<char[]> buf(new char[current_size]); |
1393 return index_->Read(buf.get(), current_size, 0); | 1394 return index_->Read(buf.get(), current_size, 0); |
1394 } | 1395 } |
1395 | 1396 |
1396 int BackendImplV3::CheckAllEntries() { | 1397 int BackendImplV3::CheckAllEntries() { |
1397 int num_dirty = 0; | 1398 int num_dirty = 0; |
1398 int num_entries = 0; | 1399 int num_entries = 0; |
1399 DCHECK(mask_ < std::numeric_limits<uint32_t>::max()); | 1400 DCHECK(mask_ < std::numeric_limits<uint32_t>::max()); |
1400 for (unsigned int i = 0; i <= mask_; i++) { | 1401 for (unsigned int i = 0; i <= mask_; i++) { |
1401 Addr address(data_->table[i]); | 1402 Addr address(data_->table[i]); |
1402 if (!address.is_initialized()) | 1403 if (!address.is_initialized()) |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1519 } | 1520 } |
1520 | 1521 |
1521 class BackendImplV3::NotImplementedIterator : public Backend::Iterator { | 1522 class BackendImplV3::NotImplementedIterator : public Backend::Iterator { |
1522 public: | 1523 public: |
1523 int OpenNextEntry(disk_cache::Entry** next_entry, | 1524 int OpenNextEntry(disk_cache::Entry** next_entry, |
1524 const net::CompletionCallback& callback) override { | 1525 const net::CompletionCallback& callback) override { |
1525 return net::ERR_NOT_IMPLEMENTED; | 1526 return net::ERR_NOT_IMPLEMENTED; |
1526 } | 1527 } |
1527 }; | 1528 }; |
1528 | 1529 |
1529 scoped_ptr<Backend::Iterator> BackendImplV3::CreateIterator() { | 1530 std::unique_ptr<Backend::Iterator> BackendImplV3::CreateIterator() { |
1530 return scoped_ptr<Iterator>(new NotImplementedIterator()); | 1531 return std::unique_ptr<Iterator>(new NotImplementedIterator()); |
1531 } | 1532 } |
1532 | 1533 |
1533 void BackendImplV3::GetStats(StatsItems* stats) { | 1534 void BackendImplV3::GetStats(StatsItems* stats) { |
1534 NOTIMPLEMENTED(); | 1535 NOTIMPLEMENTED(); |
1535 } | 1536 } |
1536 | 1537 |
1537 void BackendImplV3::OnExternalCacheHit(const std::string& key) { | 1538 void BackendImplV3::OnExternalCacheHit(const std::string& key) { |
1538 NOTIMPLEMENTED(); | 1539 NOTIMPLEMENTED(); |
1539 } | 1540 } |
1540 | 1541 |
1541 void BackendImplV3::CleanupCache() { | 1542 void BackendImplV3::CleanupCache() { |
1542 } | 1543 } |
1543 | 1544 |
1544 } // namespace disk_cache | 1545 } // namespace disk_cache |
OLD | NEW |