Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(334)

Side by Side Diff: chrome/browser/sync_file_system/local/syncable_file_operation_runner.h

Issue 442383002: Move storage-related files from webkit/ to new top-level directory storage/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_SYNC_FILE_SYSTEM_LOCAL_SYNCABLE_FILE_OPERATION_RUNNER_H_ 5 #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_LOCAL_SYNCABLE_FILE_OPERATION_RUNNER_H_
6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_LOCAL_SYNCABLE_FILE_OPERATION_RUNNER_H_ 6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_LOCAL_SYNCABLE_FILE_OPERATION_RUNNER_H_
7 7
8 #include <list> 8 #include <list>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/basictypes.h" 11 #include "base/basictypes.h"
12 #include "base/callback.h" 12 #include "base/callback.h"
13 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
14 #include "base/memory/weak_ptr.h" 14 #include "base/memory/weak_ptr.h"
15 #include "base/threading/non_thread_safe.h" 15 #include "base/threading/non_thread_safe.h"
16 #include "chrome/browser/sync_file_system/local/local_file_sync_status.h" 16 #include "chrome/browser/sync_file_system/local/local_file_sync_status.h"
17 #include "webkit/browser/fileapi/file_system_url.h" 17 #include "storage/browser/fileapi/file_system_url.h"
18 18
19 namespace fileapi { 19 namespace storage {
20 class FileSystemURL; 20 class FileSystemURL;
21 } 21 }
22 22
23 namespace sync_file_system { 23 namespace sync_file_system {
24 24
25 // This class must run only on IO thread. 25 // This class must run only on IO thread.
26 // Owned by LocalFileSyncContext. 26 // Owned by LocalFileSyncContext.
27 class SyncableFileOperationRunner 27 class SyncableFileOperationRunner
28 : public base::NonThreadSafe, 28 : public base::NonThreadSafe,
29 public base::SupportsWeakPtr<SyncableFileOperationRunner>, 29 public base::SupportsWeakPtr<SyncableFileOperationRunner>,
30 public LocalFileSyncStatus::Observer { 30 public LocalFileSyncStatus::Observer {
31 public: 31 public:
32 // Represents an operation task (which usually wraps one FileSystemOperation). 32 // Represents an operation task (which usually wraps one FileSystemOperation).
33 class Task { 33 class Task {
34 public: 34 public:
35 Task() {} 35 Task() {}
36 virtual ~Task() {} 36 virtual ~Task() {}
37 37
38 // Only one of Run() or Cancel() is called. 38 // Only one of Run() or Cancel() is called.
39 virtual void Run() = 0; 39 virtual void Run() = 0;
40 virtual void Cancel() = 0; 40 virtual void Cancel() = 0;
41 41
42 protected: 42 protected:
43 // This is never called after Run() or Cancel() is called. 43 // This is never called after Run() or Cancel() is called.
44 virtual const std::vector<fileapi::FileSystemURL>& target_paths() const = 0; 44 virtual const std::vector<storage::FileSystemURL>& target_paths() const = 0;
45 45
46 private: 46 private:
47 friend class SyncableFileOperationRunner; 47 friend class SyncableFileOperationRunner;
48 bool IsRunnable(LocalFileSyncStatus* status) const; 48 bool IsRunnable(LocalFileSyncStatus* status) const;
49 void Start(LocalFileSyncStatus* status); 49 void Start(LocalFileSyncStatus* status);
50 static void CancelAndDelete(Task* task); 50 static void CancelAndDelete(Task* task);
51 51
52 DISALLOW_COPY_AND_ASSIGN(Task); 52 DISALLOW_COPY_AND_ASSIGN(Task);
53 }; 53 };
54 54
55 SyncableFileOperationRunner(int64 max_inflight_tasks, 55 SyncableFileOperationRunner(int64 max_inflight_tasks,
56 LocalFileSyncStatus* sync_status); 56 LocalFileSyncStatus* sync_status);
57 virtual ~SyncableFileOperationRunner(); 57 virtual ~SyncableFileOperationRunner();
58 58
59 // LocalFileSyncStatus::Observer overrides. 59 // LocalFileSyncStatus::Observer overrides.
60 virtual void OnSyncEnabled(const fileapi::FileSystemURL& url) OVERRIDE; 60 virtual void OnSyncEnabled(const storage::FileSystemURL& url) OVERRIDE;
61 virtual void OnWriteEnabled(const fileapi::FileSystemURL& url) OVERRIDE; 61 virtual void OnWriteEnabled(const storage::FileSystemURL& url) OVERRIDE;
62 62
63 // Runs the given |task| if no sync operation is running on any of 63 // Runs the given |task| if no sync operation is running on any of
64 // its target_paths(). This also runs pending tasks that have become 64 // its target_paths(). This also runs pending tasks that have become
65 // runnable (before running the given operation). 65 // runnable (before running the given operation).
66 // If there're ongoing sync tasks on the target_paths this method 66 // If there're ongoing sync tasks on the target_paths this method
67 // just queues up the |task|. 67 // just queues up the |task|.
68 // Pending tasks are cancelled when this class is destructed. 68 // Pending tasks are cancelled when this class is destructed.
69 void PostOperationTask(scoped_ptr<Task> task); 69 void PostOperationTask(scoped_ptr<Task> task);
70 70
71 // Runs a next runnable task (if there's any). 71 // Runs a next runnable task (if there's any).
72 void RunNextRunnableTask(); 72 void RunNextRunnableTask();
73 73
74 // Called when an operation is completed. This will make |target_paths| 74 // Called when an operation is completed. This will make |target_paths|
75 // writable and may start a next runnable task. 75 // writable and may start a next runnable task.
76 void OnOperationCompleted( 76 void OnOperationCompleted(
77 const std::vector<fileapi::FileSystemURL>& target_paths); 77 const std::vector<storage::FileSystemURL>& target_paths);
78 78
79 LocalFileSyncStatus* sync_status() const { return sync_status_; } 79 LocalFileSyncStatus* sync_status() const { return sync_status_; }
80 80
81 int64 num_pending_tasks() const { 81 int64 num_pending_tasks() const {
82 return static_cast<int64>(pending_tasks_.size()); 82 return static_cast<int64>(pending_tasks_.size());
83 } 83 }
84 84
85 int64 num_inflight_tasks() const { return num_inflight_tasks_; } 85 int64 num_inflight_tasks() const { return num_inflight_tasks_; }
86 86
87 private: 87 private:
88 // Returns true if we should start more tasks. 88 // Returns true if we should start more tasks.
89 bool ShouldStartMoreTasks() const; 89 bool ShouldStartMoreTasks() const;
90 90
91 // Keeps track of the writing/syncing status. Not owned. 91 // Keeps track of the writing/syncing status. Not owned.
92 LocalFileSyncStatus* sync_status_; 92 LocalFileSyncStatus* sync_status_;
93 93
94 std::list<Task*> pending_tasks_; 94 std::list<Task*> pending_tasks_;
95 95
96 const int64 max_inflight_tasks_; 96 const int64 max_inflight_tasks_;
97 int64 num_inflight_tasks_; 97 int64 num_inflight_tasks_;
98 98
99 DISALLOW_COPY_AND_ASSIGN(SyncableFileOperationRunner); 99 DISALLOW_COPY_AND_ASSIGN(SyncableFileOperationRunner);
100 }; 100 };
101 101
102 } // namespace sync_file_system 102 } // namespace sync_file_system
103 103
104 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_LOCAL_SYNCABLE_FILE_OPERATION_RUNNER_ H_ 104 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_LOCAL_SYNCABLE_FILE_OPERATION_RUNNER_ H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698