Home | History | Annotate | Download | only in v3
      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