| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/block_files.h" | 5 #include "net/disk_cache/block_files.h" |
| 6 | 6 |
| 7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
| 8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
| 9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
| 10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 if (!zero_buffer_) { | 280 if (!zero_buffer_) { |
| 281 zero_buffer_ = new char[Addr::BlockSizeForFileType(BLOCK_4K) * 4]; | 281 zero_buffer_ = new char[Addr::BlockSizeForFileType(BLOCK_4K) * 4]; |
| 282 memset(zero_buffer_, 0, Addr::BlockSizeForFileType(BLOCK_4K) * 4); | 282 memset(zero_buffer_, 0, Addr::BlockSizeForFileType(BLOCK_4K) * 4); |
| 283 } | 283 } |
| 284 MappedFile* file = GetFile(address); | 284 MappedFile* file = GetFile(address); |
| 285 if (!file) | 285 if (!file) |
| 286 return; | 286 return; |
| 287 | 287 |
| 288 Trace("DeleteBlock 0x%x", address.value()); | 288 Trace("DeleteBlock 0x%x", address.value()); |
| 289 | 289 |
| 290 BlockFileHeader* header = reinterpret_cast<BlockFileHeader*>(file->buffer()); | |
| 291 DeleteMapBlock(address.start_block(), address.num_blocks(), header); | |
| 292 | |
| 293 size_t size = address.BlockSize() * address.num_blocks(); | 290 size_t size = address.BlockSize() * address.num_blocks(); |
| 294 size_t offset = address.start_block() * address.BlockSize() + | 291 size_t offset = address.start_block() * address.BlockSize() + |
| 295 kBlockHeaderSize; | 292 kBlockHeaderSize; |
| 296 if (deep) | 293 if (deep) |
| 297 file->Write(zero_buffer_, size, offset); | 294 file->Write(zero_buffer_, size, offset); |
| 298 | 295 |
| 296 BlockFileHeader* header = reinterpret_cast<BlockFileHeader*>(file->buffer()); |
| 297 DeleteMapBlock(address.start_block(), address.num_blocks(), header); |
| 298 |
| 299 if (!header->num_entries) { | 299 if (!header->num_entries) { |
| 300 // This file is now empty. Let's try to delete it. | 300 // This file is now empty. Let's try to delete it. |
| 301 FileType type = Addr::RequiredFileType(header->entry_size); | 301 FileType type = Addr::RequiredFileType(header->entry_size); |
| 302 if (Addr::BlockSizeForFileType(RANKINGS) == header->entry_size) | 302 if (Addr::BlockSizeForFileType(RANKINGS) == header->entry_size) |
| 303 type = RANKINGS; | 303 type = RANKINGS; |
| 304 RemoveEmptyFile(type); | 304 RemoveEmptyFile(type); |
| 305 } | 305 } |
| 306 } | 306 } |
| 307 | 307 |
| 308 void BlockFiles::CloseFiles() { | 308 void BlockFiles::CloseFiles() { |
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 618 } | 618 } |
| 619 | 619 |
| 620 FilePath BlockFiles::Name(int index) { | 620 FilePath BlockFiles::Name(int index) { |
| 621 // The file format allows for 256 files. | 621 // The file format allows for 256 files. |
| 622 DCHECK(index < 256 || index >= 0); | 622 DCHECK(index < 256 || index >= 0); |
| 623 std::string tmp = base::StringPrintf("%s%d", kBlockName, index); | 623 std::string tmp = base::StringPrintf("%s%d", kBlockName, index); |
| 624 return path_.AppendASCII(tmp); | 624 return path_.AppendASCII(tmp); |
| 625 } | 625 } |
| 626 | 626 |
| 627 } // namespace disk_cache | 627 } // namespace disk_cache |
| OLD | NEW |