| 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 <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 | 26 |
| 27 namespace file_system { | 27 namespace file_system { |
| 28 class DownloadOperation; | 28 class DownloadOperation; |
| 29 class OperationObserver; | 29 class OperationObserver; |
| 30 class UpdateOperation; | 30 class UpdateOperation; |
| 31 } | 31 } |
| 32 | 32 |
| 33 namespace internal { | 33 namespace internal { |
| 34 | 34 |
| 35 class FileCache; | 35 class FileCache; |
| 36 class RemovePerformer; |
| 36 class ResourceMetadata; | 37 class ResourceMetadata; |
| 37 | 38 |
| 38 // The SyncClient is used to synchronize pinned files on Drive and the | 39 // The SyncClient is used to synchronize pinned files on Drive and the |
| 39 // cache on the local drive. | 40 // cache on the local drive. |
| 40 // | 41 // |
| 41 // If the user logs out before fetching of the pinned files is complete, this | 42 // If the user logs out before fetching of the pinned files is complete, this |
| 42 // client resumes fetching operations next time the user logs in, based on | 43 // client resumes fetching operations next time the user logs in, based on |
| 43 // the states left in the cache. | 44 // the states left in the cache. |
| 44 class SyncClient { | 45 class SyncClient { |
| 45 public: | 46 public: |
| (...skipping 17 matching lines...) Expand all Loading... |
| 63 | 64 |
| 64 // Adds a fetch task to the queue. | 65 // Adds a fetch task to the queue. |
| 65 void AddFetchTask(const std::string& local_id); | 66 void AddFetchTask(const std::string& local_id); |
| 66 | 67 |
| 67 // Removes a fetch task from the queue. | 68 // Removes a fetch task from the queue. |
| 68 void RemoveFetchTask(const std::string& local_id); | 69 void RemoveFetchTask(const std::string& local_id); |
| 69 | 70 |
| 70 // Adds an upload task to the queue. | 71 // Adds an upload task to the queue. |
| 71 void AddUploadTask(const std::string& local_id); | 72 void AddUploadTask(const std::string& local_id); |
| 72 | 73 |
| 74 // Adds a remove task to the queue. |
| 75 void AddRemoveTask(const std::string& local_id); |
| 76 |
| 73 // Starts processing the backlog (i.e. pinned-but-not-filed files and | 77 // Starts processing the backlog (i.e. pinned-but-not-filed files and |
| 74 // dirty-but-not-uploaded files). Kicks off retrieval of the local | 78 // dirty-but-not-uploaded files). Kicks off retrieval of the local |
| 75 // IDs of these files, and then starts the sync loop. | 79 // IDs of these files, and then starts the sync loop. |
| 76 void StartProcessingBacklog(); | 80 void StartProcessingBacklog(); |
| 77 | 81 |
| 78 // Starts checking the existing pinned files to see if these are | 82 // Starts checking the existing pinned files to see if these are |
| 79 // up-to-date. If stale files are detected, the local IDs of these files | 83 // up-to-date. If stale files are detected, the local IDs of these files |
| 80 // are added to the queue and the sync loop is started. | 84 // are added to the queue and the sync loop is started. |
| 81 void StartCheckingExistingPinnedFiles(); | 85 void StartCheckingExistingPinnedFiles(); |
| 82 | 86 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 93 // existing one, and adds a new one to the end of the queue. | 97 // existing one, and adds a new one to the end of the queue. |
| 94 void AddTaskToQueue(SyncType type, | 98 void AddTaskToQueue(SyncType type, |
| 95 const std::string& local_id, | 99 const std::string& local_id, |
| 96 const base::TimeDelta& delay); | 100 const base::TimeDelta& delay); |
| 97 | 101 |
| 98 // Called when a task is ready to be added to the queue. | 102 // Called when a task is ready to be added to the queue. |
| 99 void StartTask(SyncType type, const std::string& local_id); | 103 void StartTask(SyncType type, const std::string& local_id); |
| 100 | 104 |
| 101 // Called when the local IDs of files in the backlog are obtained. | 105 // Called when the local IDs of files in the backlog are obtained. |
| 102 void OnGetLocalIdsOfBacklog(const std::vector<std::string>* to_fetch, | 106 void OnGetLocalIdsOfBacklog(const std::vector<std::string>* to_fetch, |
| 103 const std::vector<std::string>* to_upload); | 107 const std::vector<std::string>* to_upload, |
| 108 const std::vector<std::string>* to_remove); |
| 104 | 109 |
| 105 // Adds fetch tasks. | 110 // Adds fetch tasks. |
| 106 void AddFetchTasks(const std::vector<std::string>* local_ids); | 111 void AddFetchTasks(const std::vector<std::string>* local_ids); |
| 107 | 112 |
| 108 // Called when the file for |local_id| is fetched. | 113 // Called when the file for |local_id| is fetched. |
| 109 // Calls DoSyncLoop() to go back to the sync loop. | 114 // Calls DoSyncLoop() to go back to the sync loop. |
| 110 void OnFetchFileComplete(const std::string& local_id, | 115 void OnFetchFileComplete(const std::string& local_id, |
| 111 FileError error, | 116 FileError error, |
| 112 const base::FilePath& local_path, | 117 const base::FilePath& local_path, |
| 113 scoped_ptr<ResourceEntry> entry); | 118 scoped_ptr<ResourceEntry> entry); |
| 114 | 119 |
| 115 // Called when the file for |local_id| is uploaded. | 120 // Called when the file for |local_id| is uploaded. |
| 116 // Calls DoSyncLoop() to go back to the sync loop. | 121 // Calls DoSyncLoop() to go back to the sync loop. |
| 117 void OnUploadFileComplete(const std::string& local_id, FileError error); | 122 void OnUploadFileComplete(const std::string& local_id, FileError error); |
| 118 | 123 |
| 124 // Called when the entry is removed. |
| 125 void OnRemoveComplete(const std::string& local_id, FileError error); |
| 126 |
| 119 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_; | 127 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_; |
| 120 ResourceMetadata* metadata_; | 128 ResourceMetadata* metadata_; |
| 121 FileCache* cache_; | 129 FileCache* cache_; |
| 122 | 130 |
| 123 // Used to fetch pinned files. | 131 // Used to fetch pinned files. |
| 124 scoped_ptr<file_system::DownloadOperation> download_operation_; | 132 scoped_ptr<file_system::DownloadOperation> download_operation_; |
| 125 | 133 |
| 126 // Used to upload committed files. | 134 // Used to upload committed files. |
| 127 scoped_ptr<file_system::UpdateOperation> update_operation_; | 135 scoped_ptr<file_system::UpdateOperation> update_operation_; |
| 128 | 136 |
| 137 // Used to remove entries from the trash. |
| 138 scoped_ptr<RemovePerformer> remove_performer_; |
| 139 |
| 129 // List of the local ids of resources which have a fetch task created. | 140 // List of the local ids of resources which have a fetch task created. |
| 130 std::set<std::string> fetch_list_; | 141 std::set<std::string> fetch_list_; |
| 131 | 142 |
| 132 // List of the local ids of resources which have a upload task created. | 143 // List of the local ids of resources which have a upload task created. |
| 133 std::set<std::string> upload_list_; | 144 std::set<std::string> upload_list_; |
| 134 | 145 |
| 135 // Fetch tasks which have been created, but not started yet. If they are | 146 // Fetch tasks which have been created, but not started yet. If they are |
| 136 // removed before starting, they will be cancelled. | 147 // removed before starting, they will be cancelled. |
| 137 std::set<std::string> pending_fetch_list_; | 148 std::set<std::string> pending_fetch_list_; |
| 138 | 149 |
| 139 // The delay is used for delaying processing tasks in AddTaskToQueue(). | 150 // The delay is used for delaying processing tasks in AddTaskToQueue(). |
| 140 base::TimeDelta delay_; | 151 base::TimeDelta delay_; |
| 141 | 152 |
| 142 // The delay is used for delaying retry of tasks on server errors. | 153 // The delay is used for delaying retry of tasks on server errors. |
| 143 base::TimeDelta long_delay_; | 154 base::TimeDelta long_delay_; |
| 144 | 155 |
| 145 // Note: This should remain the last member so it'll be destroyed and | 156 // Note: This should remain the last member so it'll be destroyed and |
| 146 // invalidate its weak pointers before any other members are destroyed. | 157 // invalidate its weak pointers before any other members are destroyed. |
| 147 base::WeakPtrFactory<SyncClient> weak_ptr_factory_; | 158 base::WeakPtrFactory<SyncClient> weak_ptr_factory_; |
| 148 | 159 |
| 149 DISALLOW_COPY_AND_ASSIGN(SyncClient); | 160 DISALLOW_COPY_AND_ASSIGN(SyncClient); |
| 150 }; | 161 }; |
| 151 | 162 |
| 152 } // namespace internal | 163 } // namespace internal |
| 153 } // namespace drive | 164 } // namespace drive |
| 154 | 165 |
| 155 #endif // CHROME_BROWSER_CHROMEOS_DRIVE_SYNC_CLIENT_H_ | 166 #endif // CHROME_BROWSER_CHROMEOS_DRIVE_SYNC_CLIENT_H_ |
| OLD | NEW |