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 9namespace disk_cache { 10 11int Addr::start_block() const { 12 DCHECK(is_block_file()); 13 return value_ & kStartBlockMask; 14} 15 16int Addr::num_blocks() const { 17 DCHECK(is_block_file() || !value_); 18 return ((value_ & kNumBlocksMask) >> kNumBlocksOffset) + 1; 19} 20 21bool 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 29bool 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