OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef COMPONENTS_DRIVE_FILE_CACHE_H_ | 5 #ifndef COMPONENTS_DRIVE_FILE_CACHE_H_ |
6 #define COMPONENTS_DRIVE_FILE_CACHE_H_ | 6 #define COMPONENTS_DRIVE_FILE_CACHE_H_ |
7 | 7 |
| 8 #include <stddef.h> |
| 9 #include <stdint.h> |
| 10 |
8 #include <set> | 11 #include <set> |
9 #include <string> | 12 #include <string> |
10 | 13 |
11 #include "base/files/file_path.h" | 14 #include "base/files/file_path.h" |
| 15 #include "base/macros.h" |
12 #include "base/memory/scoped_ptr.h" | 16 #include "base/memory/scoped_ptr.h" |
13 #include "base/memory/weak_ptr.h" | 17 #include "base/memory/weak_ptr.h" |
14 #include "base/synchronization/cancellation_flag.h" | 18 #include "base/synchronization/cancellation_flag.h" |
15 #include "base/threading/thread_checker.h" | 19 #include "base/threading/thread_checker.h" |
| 20 #include "build/build_config.h" |
16 #include "components/drive/file_errors.h" | 21 #include "components/drive/file_errors.h" |
17 #include "components/drive/resource_metadata_storage.h" | 22 #include "components/drive/resource_metadata_storage.h" |
18 #if defined(OS_CHROMEOS) | 23 #if defined(OS_CHROMEOS) |
19 #include "third_party/cros_system_api/constants/cryptohome.h" | 24 #include "third_party/cros_system_api/constants/cryptohome.h" |
20 #endif | 25 #endif |
21 | 26 |
22 namespace base { | 27 namespace base { |
23 class ScopedClosureRunner; | 28 class ScopedClosureRunner; |
24 class SequencedTaskRunner; | 29 class SequencedTaskRunner; |
25 } // namespace base | 30 } // namespace base |
26 | 31 |
27 namespace drive { | 32 namespace drive { |
28 | 33 |
29 namespace internal { | 34 namespace internal { |
30 | 35 |
31 #if defined(OS_CHROMEOS) | 36 #if defined(OS_CHROMEOS) |
32 const int64 kMinFreeSpaceInBytes = cryptohome::kMinFreeSpaceInBytes; | 37 const int64_t kMinFreeSpaceInBytes = cryptohome::kMinFreeSpaceInBytes; |
33 #else | 38 #else |
34 const int64 kMinFreeSpaceInBytes = 512ull * 1024ull * 1024ull; // 512MB | 39 const int64_t kMinFreeSpaceInBytes = 512ull * 1024ull * 1024ull; // 512MB |
35 #endif | 40 #endif |
36 | 41 |
37 // Interface class used for getting the free disk space. Tests can inject an | 42 // Interface class used for getting the free disk space. Tests can inject an |
38 // implementation that reports fake free disk space. | 43 // implementation that reports fake free disk space. |
39 class FreeDiskSpaceGetterInterface { | 44 class FreeDiskSpaceGetterInterface { |
40 public: | 45 public: |
41 virtual ~FreeDiskSpaceGetterInterface() {} | 46 virtual ~FreeDiskSpaceGetterInterface() {} |
42 virtual int64 AmountOfFreeDiskSpace() = 0; | 47 virtual int64_t AmountOfFreeDiskSpace() = 0; |
43 }; | 48 }; |
44 | 49 |
45 // FileCache is used to maintain cache states of FileSystem. | 50 // FileCache is used to maintain cache states of FileSystem. |
46 // | 51 // |
47 // All non-static public member functions, unless mentioned otherwise (see | 52 // All non-static public member functions, unless mentioned otherwise (see |
48 // GetCacheFilePath() for example), should be run with |blocking_task_runner|. | 53 // GetCacheFilePath() for example), should be run with |blocking_task_runner|. |
49 class FileCache { | 54 class FileCache { |
50 public: | 55 public: |
51 // Enum defining type of file operation e.g. copy or move, etc. | 56 // Enum defining type of file operation e.g. copy or move, etc. |
52 enum FileOperationType { | 57 enum FileOperationType { |
(...skipping 23 matching lines...) Expand all Loading... |
76 // Returns true if the given path is under drive cache directory, i.e. | 81 // Returns true if the given path is under drive cache directory, i.e. |
77 // <user_profile_dir>/GCache/v1 | 82 // <user_profile_dir>/GCache/v1 |
78 // | 83 // |
79 // Can be called on any thread. | 84 // Can be called on any thread. |
80 bool IsUnderFileCacheDirectory(const base::FilePath& path) const; | 85 bool IsUnderFileCacheDirectory(const base::FilePath& path) const; |
81 | 86 |
82 // Frees up disk space to store a file with |num_bytes| size content, while | 87 // Frees up disk space to store a file with |num_bytes| size content, while |
83 // keeping drive::internal::kMinFreeSpaceInBytes bytes on the disk, if needed. | 88 // keeping drive::internal::kMinFreeSpaceInBytes bytes on the disk, if needed. |
84 // Returns true if we successfully manage to have enough space, otherwise | 89 // Returns true if we successfully manage to have enough space, otherwise |
85 // false. | 90 // false. |
86 bool FreeDiskSpaceIfNeededFor(int64 num_bytes); | 91 bool FreeDiskSpaceIfNeededFor(int64_t num_bytes); |
87 | 92 |
88 // Calculates and returns evictable cache size. In error case, this returns 0. | 93 // Calculates and returns evictable cache size. In error case, this returns 0. |
89 uint64_t CalculateEvictableCacheSize(); | 94 uint64_t CalculateEvictableCacheSize(); |
90 | 95 |
91 // Checks if file corresponding to |id| exists in cache, and returns | 96 // Checks if file corresponding to |id| exists in cache, and returns |
92 // FILE_ERROR_OK with |cache_file_path| storing the path to the file. | 97 // FILE_ERROR_OK with |cache_file_path| storing the path to the file. |
93 // |cache_file_path| must not be null. | 98 // |cache_file_path| must not be null. |
94 FileError GetFile(const std::string& id, base::FilePath* cache_file_path); | 99 FileError GetFile(const std::string& id, base::FilePath* cache_file_path); |
95 | 100 |
96 // Stores |source_path| as a cache of the remote content of the file | 101 // Stores |source_path| as a cache of the remote content of the file |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 | 169 |
165 // Checks whether the current thread is on the right sequenced worker pool | 170 // Checks whether the current thread is on the right sequenced worker pool |
166 // with the right sequence ID. If not, DCHECK will fail. | 171 // with the right sequence ID. If not, DCHECK will fail. |
167 void AssertOnSequencedWorkerPool(); | 172 void AssertOnSequencedWorkerPool(); |
168 | 173 |
169 // Destroys the cache on the blocking pool. | 174 // Destroys the cache on the blocking pool. |
170 void DestroyOnBlockingPool(); | 175 void DestroyOnBlockingPool(); |
171 | 176 |
172 // Returns available space, while keeping | 177 // Returns available space, while keeping |
173 // drive::internal::kMinFreeSpaceInBytes bytes on the disk. | 178 // drive::internal::kMinFreeSpaceInBytes bytes on the disk. |
174 int64 GetAvailableSpace(); | 179 int64_t GetAvailableSpace(); |
175 | 180 |
176 // Renames cache files from old "prefix:id.md5" format to the new format. | 181 // Renames cache files from old "prefix:id.md5" format to the new format. |
177 // TODO(hashimoto): Remove this method at some point. | 182 // TODO(hashimoto): Remove this method at some point. |
178 bool RenameCacheFilesToNewFormat(); | 183 bool RenameCacheFilesToNewFormat(); |
179 | 184 |
180 // This method must be called after writing to a cache file. | 185 // This method must be called after writing to a cache file. |
181 // Used to implement OpenForWrite(). | 186 // Used to implement OpenForWrite(). |
182 void CloseForWrite(const std::string& id); | 187 void CloseForWrite(const std::string& id); |
183 | 188 |
184 // Returns true if the cache entry can be evicted. | 189 // Returns true if the cache entry can be evicted. |
(...skipping 26 matching lines...) Expand all Loading... |
211 // invalidate its weak pointers before any other members are destroyed. | 216 // invalidate its weak pointers before any other members are destroyed. |
212 // This object should be accessed only on |blocking_task_runner_|. | 217 // This object should be accessed only on |blocking_task_runner_|. |
213 base::WeakPtrFactory<FileCache> weak_ptr_factory_; | 218 base::WeakPtrFactory<FileCache> weak_ptr_factory_; |
214 DISALLOW_COPY_AND_ASSIGN(FileCache); | 219 DISALLOW_COPY_AND_ASSIGN(FileCache); |
215 }; | 220 }; |
216 | 221 |
217 } // namespace internal | 222 } // namespace internal |
218 } // namespace drive | 223 } // namespace drive |
219 | 224 |
220 #endif // COMPONENTS_DRIVE_FILE_CACHE_H_ | 225 #endif // COMPONENTS_DRIVE_FILE_CACHE_H_ |
OLD | NEW |