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 CHROME_BROWSER_CHROMEOS_DRIVE_FILE_CACHE_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_DRIVE_FILE_CACHE_H_ |
6 #define CHROME_BROWSER_CHROMEOS_DRIVE_FILE_CACHE_H_ | 6 #define CHROME_BROWSER_CHROMEOS_DRIVE_FILE_CACHE_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 // runs |completion_callback| upon completion. | 141 // runs |completion_callback| upon completion. |
142 // Must be called on UI thread. | 142 // Must be called on UI thread. |
143 void IterateOnUIThread(const CacheIterateCallback& iteration_callback, | 143 void IterateOnUIThread(const CacheIterateCallback& iteration_callback, |
144 const base::Closure& completion_callback); | 144 const base::Closure& completion_callback); |
145 | 145 |
146 // Iterates all files in the cache and calls |iteration_callback| for each | 146 // Iterates all files in the cache and calls |iteration_callback| for each |
147 // file. |completion_callback| is run upon completion. | 147 // file. |completion_callback| is run upon completion. |
148 // TODO(hashimoto): Stop using callbacks for this method. crbug.com/242818 | 148 // TODO(hashimoto): Stop using callbacks for this method. crbug.com/242818 |
149 void Iterate(const CacheIterateCallback& iteration_callback); | 149 void Iterate(const CacheIterateCallback& iteration_callback); |
150 | 150 |
151 // Frees up disk space to store the given number of bytes, while keeping | 151 |
152 // kMinFreeSpace bytes on the disk, if needed. | 152 // Runs FreeDiskSpaceIfNeededFor() on |blocking_task_runner_|, and calls |
153 // Runs |callback| with true when we successfully manage to have enough space. | 153 // |callback| with the result asynchronously. |
| 154 // |callback| must not be null. |
154 // Must be called on the UI thread. | 155 // Must be called on the UI thread. |
155 void FreeDiskSpaceIfNeededForOnUIThread( | 156 void FreeDiskSpaceIfNeededForOnUIThread( |
156 int64 num_bytes, | 157 int64 num_bytes, |
157 const InitializeCacheCallback& callback); | 158 const InitializeCacheCallback& callback); |
158 | 159 |
159 // Checks if file corresponding to |resource_id| and |md5| exists in cache. | 160 // Frees up disk space to store a file with |num_bytes| size content, while |
| 161 // keeping kMinFreeSpace bytes on the disk, if needed. |
| 162 // Returns true if we successfully manage to have enough space, otherwise |
| 163 // false. |
| 164 bool FreeDiskSpaceIfNeededFor(int64 num_bytes); |
| 165 |
| 166 // Runs GetFile() on |blocking_task_runner_|, and calls |callback| with |
| 167 // the result asynchronously. |
160 // |callback| must not be null. | 168 // |callback| must not be null. |
161 // Must be called on the UI thread. | 169 // Must be called on the UI thread. |
162 void GetFileOnUIThread(const std::string& resource_id, | 170 void GetFileOnUIThread(const std::string& resource_id, |
163 const std::string& md5, | 171 const std::string& md5, |
164 const GetFileFromCacheCallback& callback); | 172 const GetFileFromCacheCallback& callback); |
165 | 173 |
| 174 // Checks if file corresponding to |resource_id| and |md5| exists in cache, |
| 175 // and returns FILE_ERROR_OK with |cache_file_path| storing the path to |
| 176 // the file. |
| 177 // |cache_file_path| must not be null. |
| 178 FileError GetFile(const std::string& resource_id, |
| 179 const std::string& md5, |
| 180 base::FilePath* cache_file_path); |
| 181 |
166 // Runs Store() on |blocking_task_runner_|, and calls |callback| with | 182 // Runs Store() on |blocking_task_runner_|, and calls |callback| with |
167 // the result asynchronously. | 183 // the result asynchronously. |
168 // |callback| must not be null. | 184 // |callback| must not be null. |
169 // Must be called on the UI thread. | 185 // Must be called on the UI thread. |
170 void StoreOnUIThread(const std::string& resource_id, | 186 void StoreOnUIThread(const std::string& resource_id, |
171 const std::string& md5, | 187 const std::string& md5, |
172 const base::FilePath& source_path, | 188 const base::FilePath& source_path, |
173 FileOperationType file_operation_type, | 189 FileOperationType file_operation_type, |
174 const FileOperationCallback& callback); | 190 const FileOperationCallback& callback); |
175 | 191 |
(...skipping 18 matching lines...) Expand all Loading... |
194 // - moves |source_path| to |dest_path| in persistent dir if | 210 // - moves |source_path| to |dest_path| in persistent dir if |
195 // file is not dirty | 211 // file is not dirty |
196 // - creates symlink in pinned dir that references downloaded or locally | 212 // - creates symlink in pinned dir that references downloaded or locally |
197 // modified file | 213 // modified file |
198 // |callback| must not be null. | 214 // |callback| must not be null. |
199 // Must be called on the UI thread. | 215 // Must be called on the UI thread. |
200 void PinOnUIThread(const std::string& resource_id, | 216 void PinOnUIThread(const std::string& resource_id, |
201 const std::string& md5, | 217 const std::string& md5, |
202 const FileOperationCallback& callback); | 218 const FileOperationCallback& callback); |
203 | 219 |
204 // Modifies cache state, which involves the following: | 220 // Runs Unpin() on |blocking_task_runner_|, and calls |callback| with the |
205 // - moves |source_path| to |dest_path| in tmp dir if file is not dirty | 221 // result asynchronously. |
206 // - deletes symlink from pinned dir | |
207 // |callback| must not be null. | 222 // |callback| must not be null. |
208 // Must be called on the UI thread. | 223 // Must be called on the UI thread. |
209 void UnpinOnUIThread(const std::string& resource_id, | 224 void UnpinOnUIThread(const std::string& resource_id, |
210 const std::string& md5, | 225 const std::string& md5, |
211 const FileOperationCallback& callback); | 226 const FileOperationCallback& callback); |
212 | 227 |
| 228 // Modifies cache state, which involves the following: |
| 229 // - moves the local file from pinned directory to unpinned directory. |
| 230 // - update cache metadata. |
| 231 FileError Unpin(const std::string& resource_id, const std::string& md5); |
| 232 |
213 // Sets the state of the cache entry corresponding to |resource_id| and |md5| | 233 // Sets the state of the cache entry corresponding to |resource_id| and |md5| |
214 // as mounted. | 234 // as mounted. |
215 // |callback| must not be null. | 235 // |callback| must not be null. |
216 // Must be called on the UI thread. | 236 // Must be called on the UI thread. |
217 void MarkAsMountedOnUIThread(const std::string& resource_id, | 237 void MarkAsMountedOnUIThread(const std::string& resource_id, |
218 const std::string& md5, | 238 const std::string& md5, |
219 const GetFileFromCacheCallback& callback); | 239 const GetFileFromCacheCallback& callback); |
220 | 240 |
221 // Set the state of the cache entry corresponding to file_path as unmounted. | 241 // Set the state of the cache entry corresponding to file_path as unmounted. |
222 // |callback| must not be null. | 242 // |callback| must not be null. |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
329 // Initializes the cache. Returns true on success. | 349 // Initializes the cache. Returns true on success. |
330 bool InitializeOnBlockingPool(); | 350 bool InitializeOnBlockingPool(); |
331 | 351 |
332 // Initializes the cache with in-memory cache for testing. | 352 // Initializes the cache with in-memory cache for testing. |
333 // The in-memory cache is used since it's faster than the db. | 353 // The in-memory cache is used since it's faster than the db. |
334 void InitializeOnBlockingPoolForTesting(); | 354 void InitializeOnBlockingPoolForTesting(); |
335 | 355 |
336 // Destroys the cache on the blocking pool. | 356 // Destroys the cache on the blocking pool. |
337 void DestroyOnBlockingPool(); | 357 void DestroyOnBlockingPool(); |
338 | 358 |
339 // Used to implement FreeDiskSpaceIfNeededForOnUIThread(). | |
340 bool FreeDiskSpaceIfNeededFor(int64 num_bytes); | |
341 | |
342 // Used to implement GetFileOnUIThread. | |
343 FileError GetFile(const std::string& resource_id, | |
344 const std::string& md5, | |
345 base::FilePath* cache_file_path); | |
346 | |
347 // Used to implement Store and StoreLocallyModifiedOnUIThread. | 359 // Used to implement Store and StoreLocallyModifiedOnUIThread. |
348 // TODO(hidehiko): Merge this method with Store(), after | 360 // TODO(hidehiko): Merge this method with Store(), after |
349 // StoreLocallyModifiedOnUIThread is removed. | 361 // StoreLocallyModifiedOnUIThread is removed. |
350 FileError StoreInternal(const std::string& resource_id, | 362 FileError StoreInternal(const std::string& resource_id, |
351 const std::string& md5, | 363 const std::string& md5, |
352 const base::FilePath& source_path, | 364 const base::FilePath& source_path, |
353 FileOperationType file_operation_type, | 365 FileOperationType file_operation_type, |
354 CachedFileOrigin origin); | 366 CachedFileOrigin origin); |
355 | 367 |
356 // Used to implement PinOnUIThread. | 368 // Used to implement PinOnUIThread. |
357 FileError Pin(const std::string& resource_id, | 369 FileError Pin(const std::string& resource_id, |
358 const std::string& md5); | 370 const std::string& md5); |
359 | 371 |
360 // Used to implement UnpinOnUIThread. | |
361 FileError Unpin(const std::string& resource_id, | |
362 const std::string& md5); | |
363 | |
364 // Used to implement MarkAsMountedOnUIThread. | 372 // Used to implement MarkAsMountedOnUIThread. |
365 FileError MarkAsMounted(const std::string& resource_id, | 373 FileError MarkAsMounted(const std::string& resource_id, |
366 const std::string& md5, | 374 const std::string& md5, |
367 base::FilePath* cache_file_path); | 375 base::FilePath* cache_file_path); |
368 | 376 |
369 // Used to implement MarkAsUnmountedOnUIThread. | 377 // Used to implement MarkAsUnmountedOnUIThread. |
370 FileError MarkAsUnmounted(const base::FilePath& file_path); | 378 FileError MarkAsUnmounted(const base::FilePath& file_path); |
371 | 379 |
372 // Used to implement MarkDirtyOnUIThread. | 380 // Used to implement MarkDirtyOnUIThread. |
373 FileError MarkDirty(const std::string& resource_id, | 381 FileError MarkDirty(const std::string& resource_id, |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 // this value. | 435 // this value. |
428 // | 436 // |
429 // Copied from cryptohome/homedirs.h. | 437 // Copied from cryptohome/homedirs.h. |
430 // TODO(satorux): Share the constant. | 438 // TODO(satorux): Share the constant. |
431 const int64 kMinFreeSpace = 512 * 1LL << 20; | 439 const int64 kMinFreeSpace = 512 * 1LL << 20; |
432 | 440 |
433 } // namespace internal | 441 } // namespace internal |
434 } // namespace drive | 442 } // namespace drive |
435 | 443 |
436 #endif // CHROME_BROWSER_CHROMEOS_DRIVE_FILE_CACHE_H_ | 444 #endif // CHROME_BROWSER_CHROMEOS_DRIVE_FILE_CACHE_H_ |
OLD | NEW |