1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that can be 3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// found in the LICENSE file. 4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "net/disk_cache/addr.h" 6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 7c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/logging.h" 8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottnamespace disk_cache { 10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottint Addr::start_block() const { 12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DCHECK(is_block_file()); 13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return value_ & kStartBlockMask; 14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottint Addr::num_blocks() const { 17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DCHECK(is_block_file() || !value_); 18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return ((value_ & kNumBlocksMask) >> kNumBlocksOffset) + 1; 19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottbool Addr::SetFileNumber(int file_number) { 22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DCHECK(is_separate_file()); 23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (file_number & ~kFileNameMask) 24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return false; 25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott value_ = kInitializedMask | file_number; 26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return true; 27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenbool Addr::SanityCheck() const { 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!is_initialized()) 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return !value_; 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (((value_ & kFileTypeMask) >> kFileTypeOffset) > 4) 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (is_separate_file()) 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return true; 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const uint32 kReservedBitsMask = 0x0c000000; 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return !(value_ & kReservedBitsMask); 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 43c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} // namespace disk_cache 44