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 // This is an internal class that handles the address of a cache record. | 5 // This is an internal class that handles the address of a cache record. |
6 // See net/disk_cache/disk_cache.h for the public interface of the cache. | 6 // See net/disk_cache/disk_cache.h for the public interface of the cache. |
7 | 7 |
8 #ifndef NET_DISK_CACHE_ADDR_H_ | 8 #ifndef NET_DISK_CACHE_ADDR_H_ |
9 #define NET_DISK_CACHE_ADDR_H_ | 9 #define NET_DISK_CACHE_ADDR_H_ |
10 | 10 |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 } | 101 } |
102 | 102 |
103 bool operator==(Addr other) const { | 103 bool operator==(Addr other) const { |
104 return value_ == other.value_; | 104 return value_ == other.value_; |
105 } | 105 } |
106 | 106 |
107 bool operator!=(Addr other) const { | 107 bool operator!=(Addr other) const { |
108 return value_ != other.value_; | 108 return value_ != other.value_; |
109 } | 109 } |
110 | 110 |
| 111 // Conversions between the address of an external file and the address of the |
| 112 // control block of that external file. |
| 113 Addr AsExternal() const; |
| 114 Addr AsBlockFile() const; |
| 115 |
111 static Addr FromEntryAddress(uint32 value) { | 116 static Addr FromEntryAddress(uint32 value) { |
112 return Addr(kInitializedMask + (BLOCK_ENTRIES << kFileTypeOffset) + value); | 117 return Addr(kInitializedMask + (BLOCK_ENTRIES << kFileTypeOffset) + value); |
113 } | 118 } |
114 | 119 |
115 static Addr FromEvictedAddress(uint32 value) { | 120 static Addr FromEvictedAddress(uint32 value) { |
116 return Addr(kInitializedMask + (BLOCK_EVICTED << kFileTypeOffset) + value); | 121 return Addr(kInitializedMask + (BLOCK_EVICTED << kFileTypeOffset) + value); |
117 } | 122 } |
118 | 123 |
| 124 // Returns the part of the address that could be stored by the index. |
| 125 uint32 ToIndexEntryAddress() const { |
| 126 return value_ & (kFileSelectorMask | kStartBlockMask); |
| 127 } |
| 128 |
119 static int BlockSizeForFileType(FileType file_type) { | 129 static int BlockSizeForFileType(FileType file_type) { |
120 switch (file_type) { | 130 switch (file_type) { |
121 case RANKINGS: | 131 case RANKINGS: |
122 return 36; | 132 return 36; |
123 case BLOCK_256: | 133 case BLOCK_256: |
124 return 256; | 134 return 256; |
125 case BLOCK_1K: | 135 case BLOCK_1K: |
126 return 1024; | 136 return 1024; |
127 case BLOCK_4K: | 137 case BLOCK_4K: |
128 return 4096; | 138 return 4096; |
(...skipping 29 matching lines...) Expand all Loading... |
158 bool SanityCheckV3() const; | 168 bool SanityCheckV3() const; |
159 bool SanityCheckForEntryV2() const; | 169 bool SanityCheckForEntryV2() const; |
160 bool SanityCheckForEntryV3() const; | 170 bool SanityCheckForEntryV3() const; |
161 bool SanityCheckForRankings() const; | 171 bool SanityCheckForRankings() const; |
162 | 172 |
163 private: | 173 private: |
164 uint32 reserved_bits() const { | 174 uint32 reserved_bits() const { |
165 return value_ & kReservedBitsMask; | 175 return value_ & kReservedBitsMask; |
166 } | 176 } |
167 | 177 |
| 178 void SetFileType(FileType type); |
| 179 |
168 static const uint32 kInitializedMask = 0x80000000; | 180 static const uint32 kInitializedMask = 0x80000000; |
169 static const uint32 kFileTypeMask = 0x70000000; | 181 static const uint32 kFileTypeMask = 0x70000000; |
170 static const uint32 kFileTypeOffset = 28; | 182 static const uint32 kFileTypeOffset = 28; |
171 static const uint32 kReservedBitsMask = 0x0c000000; | 183 static const uint32 kReservedBitsMask = 0x0c000000; |
172 static const uint32 kNumBlocksMask = 0x03000000; | 184 static const uint32 kNumBlocksMask = 0x03000000; |
173 static const uint32 kNumBlocksOffset = 24; | 185 static const uint32 kNumBlocksOffset = 24; |
174 static const uint32 kFileSelectorMask = 0x00ff0000; | 186 static const uint32 kFileSelectorMask = 0x00ff0000; |
175 static const uint32 kFileSelectorOffset = 16; | 187 static const uint32 kFileSelectorOffset = 16; |
176 static const uint32 kStartBlockMask = 0x0000FFFF; | 188 static const uint32 kStartBlockMask = 0x0000FFFF; |
177 static const uint32 kFileNameMask = 0x0FFFFFFF; | 189 static const uint32 kFileNameMask = 0x0FFFFFFF; |
178 | 190 |
179 CacheAddr value_; | 191 CacheAddr value_; |
180 }; | 192 }; |
181 | 193 |
182 } // namespace disk_cache | 194 } // namespace disk_cache |
183 | 195 |
184 #endif // NET_DISK_CACHE_ADDR_H_ | 196 #endif // NET_DISK_CACHE_ADDR_H_ |
OLD | NEW |