• 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 of the cache.
6 
7 #ifndef NET_DISK_CACHE_BACKEND_IMPL_H_
8 #define NET_DISK_CACHE_BACKEND_IMPL_H_
9 
10 #include "base/containers/hash_tables.h"
11 #include "base/files/file_path.h"
12 #include "base/timer/timer.h"
13 #include "net/disk_cache/block_files.h"
14 #include "net/disk_cache/disk_cache.h"
15 #include "net/disk_cache/eviction.h"
16 #include "net/disk_cache/in_flight_backend_io.h"
17 #include "net/disk_cache/rankings.h"
18 #include "net/disk_cache/stats.h"
19 #include "net/disk_cache/stress_support.h"
20 #include "net/disk_cache/trace.h"
21 
22 namespace disk_cache {
23 
24 // This class implements the Backend interface. An object of this
25 // class handles the operations of the cache for a particular profile.
26 class NET_EXPORT_PRIVATE BackendImpl : public Backend {
27   friend class Eviction;
28  public:
29   BackendImpl(const base::FilePath& path, base::MessageLoopProxy* cache_thread,
30               net::NetLog* net_log);
31 
32   // Performs general initialization for this current instance of the cache.
33   int Init(const CompletionCallback& callback);
34 
35  private:
36   void CleanupCache();
37 
38   // Returns the full name for an external storage file.
39   base::FilePath GetFileName(Addr address) const;
40 
41   // Creates a new backing file for the cache index.
42   bool CreateBackingStore(disk_cache::File* file);
43   bool InitBackingStore(bool* file_created);
44 
45   // Reports an uncommon, recoverable error.
46   void ReportError(int error);
47 
48   // Performs basic checks on the index file. Returns false on failure.
49   bool CheckIndex();
50 
51   base::FilePath path_;  // Path to the folder used as backing storage.
52   BlockFiles block_files_;  // Set of files used to store all data.
53   bool init_;  // controls the initialization of the system.
54 
55   DISALLOW_COPY_AND_ASSIGN(BackendImpl);
56 };
57 
58 }  // namespace disk_cache
59 
60 #endif  // NET_DISK_CACHE_BACKEND_IMPL_H_
61