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 3 // found in the LICENSE file. 4 5 #include "net/disk_cache/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::SanityCheck() const { 30 if (!is_initialized()) 31 return !value_; 32 33 if (((value_ & kFileTypeMask) >> kFileTypeOffset) > 4) 34 return false; 35 36 if (is_separate_file()) 37 return true; 38 39 const uint32 kReservedBitsMask = 0x0c000000; 40 return !(value_ & kReservedBitsMask); 41 } 42 43 } // namespace disk_cache 44