diff options
Diffstat (limited to 'chromium/net/disk_cache/blockfile/block_bitmaps_v3.h')
-rw-r--r-- | chromium/net/disk_cache/blockfile/block_bitmaps_v3.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/chromium/net/disk_cache/blockfile/block_bitmaps_v3.h b/chromium/net/disk_cache/blockfile/block_bitmaps_v3.h new file mode 100644 index 00000000000..40eefb14a74 --- /dev/null +++ b/chromium/net/disk_cache/blockfile/block_bitmaps_v3.h @@ -0,0 +1,65 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// See net/disk_cache/disk_cache.h for the public interface. + +#ifndef NET_DISK_CACHE_BLOCKFILE_BLOCK_BITMAPS_V3_H_ +#define NET_DISK_CACHE_BLOCKFILE_BLOCK_BITMAPS_V3_H_ + +#include "base/files/file_path.h" +#include "net/base/net_export.h" +#include "net/disk_cache/blockfile/addr.h" +#include "net/disk_cache/blockfile/block_files.h" + +namespace disk_cache { + +class BackendImplV3; + +// This class is the interface in the v3 disk cache to the set of files holding +// cached data that is small enough to not be efficiently stored in a dedicated +// file (i.e. < kMaxBlockSize). It is primarily used to allocate and free +// regions in those files used to store data. +class NET_EXPORT_PRIVATE BlockBitmaps { + public: + BlockBitmaps(); + ~BlockBitmaps(); + + void Init(const BlockFilesBitmaps& bitmaps); + + // Creates a new entry on a block file. block_type indicates the size of block + // to be used (as defined on cache_addr.h), block_count is the number of + // blocks to allocate, and block_address is the address of the new entry. + bool CreateBlock(FileType block_type, int block_count, Addr* block_address); + + // Removes an entry from the block files. + void DeleteBlock(Addr address); + + // Releases the internal bitmaps. The cache is being purged. + void Clear(); + + // Sends UMA stats. + void ReportStats(); + + // Returns true if the blocks pointed by a given address are currently used. + // This method is only intended for debugging. + bool IsValid(Addr address); + + private: + // Returns the header number that stores a given address. + int GetHeaderNumber(Addr address); + + // Returns the appropriate header to use for a new block. + int HeaderNumberForNewBlock(FileType block_type, int block_count); + + // Retrieves stats for the given file index. + void GetFileStats(int index, int* used_count, int* load); + + BlockFilesBitmaps bitmaps_; + + DISALLOW_COPY_AND_ASSIGN(BlockBitmaps); +}; + +} // namespace disk_cache + +#endif // NET_DISK_CACHE_BLOCKFILE_BLOCK_BITMAPS_V3_H_ |