| 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_SYNC_CLIENT_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_DRIVE_SYNC_CLIENT_H_ |
| 6 #define CHROME_BROWSER_CHROMEOS_DRIVE_SYNC_CLIENT_H_ | 6 #define CHROME_BROWSER_CHROMEOS_DRIVE_SYNC_CLIENT_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 | 60 |
| 61 // Adds a fetch task. | 61 // Adds a fetch task. |
| 62 void AddFetchTask(const std::string& local_id); | 62 void AddFetchTask(const std::string& local_id); |
| 63 | 63 |
| 64 // Removes a fetch task. | 64 // Removes a fetch task. |
| 65 void RemoveFetchTask(const std::string& local_id); | 65 void RemoveFetchTask(const std::string& local_id); |
| 66 | 66 |
| 67 // Adds a update task. | 67 // Adds a update task. |
| 68 void AddUpdateTask(const ClientContext& context, const std::string& local_id); | 68 void AddUpdateTask(const ClientContext& context, const std::string& local_id); |
| 69 | 69 |
| 70 // Waits for the update task to complete and runs the callback. |
| 71 // Returns false if no task is found for the spcecified ID. |
| 72 bool WaitForUpdateTaskToComplete(const std::string& local_id, |
| 73 const FileOperationCallback& callback); |
| 74 |
| 70 // Starts processing the backlog (i.e. pinned-but-not-filed files and | 75 // Starts processing the backlog (i.e. pinned-but-not-filed files and |
| 71 // dirty-but-not-uploaded files). Kicks off retrieval of the local | 76 // dirty-but-not-uploaded files). Kicks off retrieval of the local |
| 72 // IDs of these files, and then starts the sync loop. | 77 // IDs of these files, and then starts the sync loop. |
| 73 void StartProcessingBacklog(); | 78 void StartProcessingBacklog(); |
| 74 | 79 |
| 75 // Starts checking the existing pinned files to see if these are | 80 // Starts checking the existing pinned files to see if these are |
| 76 // up-to-date. If stale files are detected, the local IDs of these files | 81 // up-to-date. If stale files are detected, the local IDs of these files |
| 77 // are added and the sync loop is started. | 82 // are added and the sync loop is started. |
| 78 void StartCheckingExistingPinnedFiles(); | 83 void StartCheckingExistingPinnedFiles(); |
| 79 | 84 |
| 80 // Sets a delay for testing. | 85 // Sets a delay for testing. |
| 81 void set_delay_for_testing(const base::TimeDelta& delay) { | 86 void set_delay_for_testing(const base::TimeDelta& delay) { |
| 82 delay_ = delay; | 87 delay_ = delay; |
| 83 } | 88 } |
| 84 | 89 |
| 85 // Starts the sync loop if it's not running. | |
| 86 void StartSyncLoop(); | |
| 87 | |
| 88 private: | 90 private: |
| 89 // Types of sync tasks. | 91 // Types of sync tasks. |
| 90 enum SyncType { | 92 enum SyncType { |
| 91 FETCH, // Fetch a file from the Drive server. | 93 FETCH, // Fetch a file from the Drive server. |
| 92 UPDATE, // Updates an entry's metadata or content on the Drive server. | 94 UPDATE, // Updates an entry's metadata or content on the Drive server. |
| 93 }; | 95 }; |
| 94 | 96 |
| 95 // States of sync tasks. | 97 // States of sync tasks. |
| 96 enum SyncState { | 98 enum SyncState { |
| 97 SUSPENDED, // Task is currently inactive. | 99 SUSPENDED, // Task is currently inactive. |
| 98 PENDING, // Task is going to run. | 100 PENDING, // Task is going to run. |
| 99 RUNNING, // Task is running. | 101 RUNNING, // Task is running. |
| 100 }; | 102 }; |
| 101 | 103 |
| 102 typedef std::pair<SyncType, std::string> SyncTaskKey; | 104 typedef std::pair<SyncType, std::string> SyncTaskKey; |
| 103 | 105 |
| 104 struct SyncTask { | 106 struct SyncTask { |
| 105 SyncTask(); | 107 SyncTask(); |
| 106 ~SyncTask(); | 108 ~SyncTask(); |
| 107 SyncState state; | 109 SyncState state; |
| 108 ClientContext context; | 110 ClientContext context; |
| 109 base::Callback<base::Closure(const ClientContext& context)> task; | 111 base::Callback<base::Closure(const ClientContext& context)> task; |
| 110 bool should_run_again; | 112 bool should_run_again; |
| 111 base::Closure cancel_closure; | 113 base::Closure cancel_closure; |
| 112 std::vector<SyncTaskKey> dependent_tasks; | 114 std::vector<SyncTaskKey> dependent_tasks; |
| 115 std::vector<FileOperationCallback> waiting_callbacks; |
| 113 }; | 116 }; |
| 114 | 117 |
| 115 typedef std::map<SyncTaskKey, SyncTask> SyncTasks; | 118 typedef std::map<SyncTaskKey, SyncTask> SyncTasks; |
| 116 | 119 |
| 117 // Performs a FETCH task. | 120 // Performs a FETCH task. |
| 118 base::Closure PerformFetchTask(const std::string& local_id, | 121 base::Closure PerformFetchTask(const std::string& local_id, |
| 119 const ClientContext& context); | 122 const ClientContext& context); |
| 120 | 123 |
| 121 // Adds a FETCH task. | 124 // Adds a FETCH task. |
| 122 void AddFetchTaskInternal(const std::string& local_id, | 125 void AddFetchTaskInternal(const std::string& local_id, |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 // invalidate its weak pointers before any other members are destroyed. | 187 // invalidate its weak pointers before any other members are destroyed. |
| 185 base::WeakPtrFactory<SyncClient> weak_ptr_factory_; | 188 base::WeakPtrFactory<SyncClient> weak_ptr_factory_; |
| 186 | 189 |
| 187 DISALLOW_COPY_AND_ASSIGN(SyncClient); | 190 DISALLOW_COPY_AND_ASSIGN(SyncClient); |
| 188 }; | 191 }; |
| 189 | 192 |
| 190 } // namespace internal | 193 } // namespace internal |
| 191 } // namespace drive | 194 } // namespace drive |
| 192 | 195 |
| 193 #endif // CHROME_BROWSER_CHROMEOS_DRIVE_SYNC_CLIENT_H_ | 196 #endif // CHROME_BROWSER_CHROMEOS_DRIVE_SYNC_CLIENT_H_ |
| OLD | NEW |