backend_worker_v3.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
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_BLOCKFILE_BACKEND_WORKER_V3_H_
8#define NET_DISK_CACHE_BLOCKFILE_BACKEND_WORKER_V3_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/blockfile/block_files.h"
14#include "net/disk_cache/blockfile/eviction.h"
15#include "net/disk_cache/blockfile/in_flight_backend_io.h"
16#include "net/disk_cache/blockfile/rankings.h"
17#include "net/disk_cache/blockfile/stats.h"
18#include "net/disk_cache/blockfile/stress_support.h"
19#include "net/disk_cache/blockfile/trace.h"
20#include "net/disk_cache/disk_cache.h"
21
22namespace 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.
26class 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_BLOCKFILE_BACKEND_WORKER_V3_H_
61