• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 // See net/disk_cache/disk_cache.h for the public interface.
6 
7 #ifndef NET_DISK_CACHE_V3_BLOCK_BITMAPS_H_
8 #define NET_DISK_CACHE_V3_BLOCK_BITMAPS_H_
9 
10 #include "base/files/file_path.h"
11 #include "net/base/net_export.h"
12 #include "net/disk_cache/addr.h"
13 #include "net/disk_cache/block_files.h"
14 
15 namespace disk_cache {
16 
17 class BackendImplV3;
18 
19 // This class is the interface in the v3 disk cache to the set of files holding
20 // cached data that is small enough to not be efficiently stored in a dedicated
21 // file (i.e. < kMaxBlockSize). It is primarily used to allocate and free
22 // regions in those files used to store data.
23 class NET_EXPORT_PRIVATE BlockBitmaps {
24  public:
25   BlockBitmaps();
26   ~BlockBitmaps();
27 
28   void Init(const BlockFilesBitmaps& bitmaps);
29 
30   // Creates a new entry on a block file. block_type indicates the size of block
31   // to be used (as defined on cache_addr.h), block_count is the number of
32   // blocks to allocate, and block_address is the address of the new entry.
33   bool CreateBlock(FileType block_type, int block_count, Addr* block_address);
34 
35   // Removes an entry from the block files.
36   void DeleteBlock(Addr address);
37 
38   // Releases the internal bitmaps. The cache is being purged.
39   void Clear();
40 
41   // Sends UMA stats.
42   void ReportStats();
43 
44   // Returns true if the blocks pointed by a given address are currently used.
45   // This method is only intended for debugging.
46   bool IsValid(Addr address);
47 
48  private:
49   // Returns the header number that stores a given address.
50   int GetHeaderNumber(Addr address);
51 
52   // Returns the appropriate header to use for a new block.
53   int HeaderNumberForNewBlock(FileType block_type, int block_count);
54 
55   // Retrieves stats for the given file index.
56   void GetFileStats(int index, int* used_count, int* load);
57 
58   BlockFilesBitmaps bitmaps_;
59 
60   DISALLOW_COPY_AND_ASSIGN(BlockBitmaps);
61 };
62 
63 }  // namespace disk_cache
64 
65 #endif  // NET_DISK_CACHE_V3_BLOCK_BITMAPS_H_
66