OLD | NEW |
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 <stdint.h> |
| 9 |
8 #include <list> | 10 #include <list> |
9 #include <vector> | 11 #include <vector> |
10 | 12 |
11 #include "base/basictypes.h" | |
12 #include "base/callback.h" | 13 #include "base/callback.h" |
| 14 #include "base/macros.h" |
13 #include "base/memory/scoped_ptr.h" | 15 #include "base/memory/scoped_ptr.h" |
14 #include "base/memory/weak_ptr.h" | 16 #include "base/memory/weak_ptr.h" |
15 #include "base/threading/non_thread_safe.h" | 17 #include "base/threading/non_thread_safe.h" |
16 #include "chrome/browser/sync_file_system/local/local_file_sync_status.h" | 18 #include "chrome/browser/sync_file_system/local/local_file_sync_status.h" |
17 #include "storage/browser/fileapi/file_system_url.h" | 19 #include "storage/browser/fileapi/file_system_url.h" |
18 | 20 |
19 namespace storage { | 21 namespace storage { |
20 class FileSystemURL; | 22 class FileSystemURL; |
21 } | 23 } |
22 | 24 |
(...skipping 22 matching lines...) Expand all Loading... |
45 | 47 |
46 private: | 48 private: |
47 friend class SyncableFileOperationRunner; | 49 friend class SyncableFileOperationRunner; |
48 bool IsRunnable(LocalFileSyncStatus* status) const; | 50 bool IsRunnable(LocalFileSyncStatus* status) const; |
49 void Start(LocalFileSyncStatus* status); | 51 void Start(LocalFileSyncStatus* status); |
50 static void CancelAndDelete(Task* task); | 52 static void CancelAndDelete(Task* task); |
51 | 53 |
52 DISALLOW_COPY_AND_ASSIGN(Task); | 54 DISALLOW_COPY_AND_ASSIGN(Task); |
53 }; | 55 }; |
54 | 56 |
55 SyncableFileOperationRunner(int64 max_inflight_tasks, | 57 SyncableFileOperationRunner(int64_t max_inflight_tasks, |
56 LocalFileSyncStatus* sync_status); | 58 LocalFileSyncStatus* sync_status); |
57 ~SyncableFileOperationRunner() override; | 59 ~SyncableFileOperationRunner() override; |
58 | 60 |
59 // LocalFileSyncStatus::Observer overrides. | 61 // LocalFileSyncStatus::Observer overrides. |
60 void OnSyncEnabled(const storage::FileSystemURL& url) override; | 62 void OnSyncEnabled(const storage::FileSystemURL& url) override; |
61 void OnWriteEnabled(const storage::FileSystemURL& url) override; | 63 void OnWriteEnabled(const storage::FileSystemURL& url) override; |
62 | 64 |
63 // Runs the given |task| if no sync operation is running on any of | 65 // 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 | 66 // its target_paths(). This also runs pending tasks that have become |
65 // runnable (before running the given operation). | 67 // runnable (before running the given operation). |
66 // If there're ongoing sync tasks on the target_paths this method | 68 // If there're ongoing sync tasks on the target_paths this method |
67 // just queues up the |task|. | 69 // just queues up the |task|. |
68 // Pending tasks are cancelled when this class is destructed. | 70 // Pending tasks are cancelled when this class is destructed. |
69 void PostOperationTask(scoped_ptr<Task> task); | 71 void PostOperationTask(scoped_ptr<Task> task); |
70 | 72 |
71 // Runs a next runnable task (if there's any). | 73 // Runs a next runnable task (if there's any). |
72 void RunNextRunnableTask(); | 74 void RunNextRunnableTask(); |
73 | 75 |
74 // Called when an operation is completed. This will make |target_paths| | 76 // Called when an operation is completed. This will make |target_paths| |
75 // writable and may start a next runnable task. | 77 // writable and may start a next runnable task. |
76 void OnOperationCompleted( | 78 void OnOperationCompleted( |
77 const std::vector<storage::FileSystemURL>& target_paths); | 79 const std::vector<storage::FileSystemURL>& target_paths); |
78 | 80 |
79 LocalFileSyncStatus* sync_status() const { return sync_status_; } | 81 LocalFileSyncStatus* sync_status() const { return sync_status_; } |
80 | 82 |
81 int64 num_pending_tasks() const { | 83 int64_t num_pending_tasks() const { |
82 return static_cast<int64>(pending_tasks_.size()); | 84 return static_cast<int64_t>(pending_tasks_.size()); |
83 } | 85 } |
84 | 86 |
85 int64 num_inflight_tasks() const { return num_inflight_tasks_; } | 87 int64_t num_inflight_tasks() const { return num_inflight_tasks_; } |
86 | 88 |
87 private: | 89 private: |
88 // Returns true if we should start more tasks. | 90 // Returns true if we should start more tasks. |
89 bool ShouldStartMoreTasks() const; | 91 bool ShouldStartMoreTasks() const; |
90 | 92 |
91 // Keeps track of the writing/syncing status. Not owned. | 93 // Keeps track of the writing/syncing status. Not owned. |
92 LocalFileSyncStatus* sync_status_; | 94 LocalFileSyncStatus* sync_status_; |
93 | 95 |
94 std::list<Task*> pending_tasks_; | 96 std::list<Task*> pending_tasks_; |
95 | 97 |
96 const int64 max_inflight_tasks_; | 98 const int64_t max_inflight_tasks_; |
97 int64 num_inflight_tasks_; | 99 int64_t num_inflight_tasks_; |
98 | 100 |
99 DISALLOW_COPY_AND_ASSIGN(SyncableFileOperationRunner); | 101 DISALLOW_COPY_AND_ASSIGN(SyncableFileOperationRunner); |
100 }; | 102 }; |
101 | 103 |
102 } // namespace sync_file_system | 104 } // namespace sync_file_system |
103 | 105 |
104 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_LOCAL_SYNCABLE_FILE_OPERATION_RUNNER_
H_ | 106 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_LOCAL_SYNCABLE_FILE_OPERATION_RUNNER_
H_ |
OLD | NEW |