OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "net/disk_cache/blockfile/addr.h" | |
6 | |
7 #include "base/logging.h" | |
8 | |
9 namespace disk_cache { | |
10 | |
11 int Addr::start_block() const { | |
12 DCHECK(is_block_file()); | |
13 return value_ & kStartBlockMask; | |
14 } | |
15 | |
16 int Addr::num_blocks() const { | |
17 DCHECK(is_block_file() || !value_); | |
18 return ((value_ & kNumBlocksMask) >> kNumBlocksOffset) + 1; | |
19 } | |
20 | |
21 bool Addr::SetFileNumber(int file_number) { | |
22 DCHECK(is_separate_file()); | |
23 if (file_number & ~kFileNameMask) | |
24 return false; | |
25 value_ = kInitializedMask | file_number; | |
26 return true; | |
27 } | |
28 | |
29 bool Addr::SanityCheckV2() const { | |
30 if (!is_initialized()) | |
31 return !value_; | |
32 | |
33 if (file_type() > BLOCK_4K) | |
34 return false; | |
35 | |
36 if (is_separate_file()) | |
37 return true; | |
38 | |
39 return !reserved_bits(); | |
40 } | |
41 | |
42 bool Addr::SanityCheckV3() const { | |
43 if (!is_initialized()) | |
44 return !value_; | |
45 | |
46 // For actual entries, SanityCheckForEntryV3 should be used. | |
47 if (file_type() > BLOCK_FILES) | |
48 return false; | |
49 | |
50 if (is_separate_file()) | |
51 return true; | |
52 | |
53 return !reserved_bits(); | |
54 } | |
55 | |
56 bool Addr::SanityCheckForEntryV2() const { | |
57 if (!SanityCheckV2() || !is_initialized()) | |
58 return false; | |
59 | |
60 if (is_separate_file() || file_type() != BLOCK_256) | |
61 return false; | |
62 | |
63 return true; | |
64 } | |
65 | |
66 bool Addr::SanityCheckForEntryV3() const { | |
67 if (!is_initialized()) | |
68 return false; | |
69 | |
70 if (reserved_bits()) | |
71 return false; | |
72 | |
73 if (file_type() != BLOCK_ENTRIES && file_type() != BLOCK_EVICTED) | |
74 return false; | |
75 | |
76 if (num_blocks() != 1) | |
77 return false; | |
78 | |
79 return true; | |
80 } | |
81 | |
82 bool Addr::SanityCheckForRankings() const { | |
83 if (!SanityCheckV2() || !is_initialized()) | |
84 return false; | |
85 | |
86 if (is_separate_file() || file_type() != RANKINGS || num_blocks() != 1) | |
87 return false; | |
88 | |
89 return true; | |
90 } | |
91 | |
92 } // namespace disk_cache | |
OLD | NEW |