Commit 3b668780 authored by tzik@chromium.org's avatar tzik@chromium.org

[SyncFS] Replace callbacks with token in LocalToRemoteSyncer::UpdateRemoteMetadata

BUG=344769

Review URL: https://codereview.chromium.org/337803005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@278350 0039d316-1c4b-4281-b951-d872f2087c98
parent 72008d7c
...@@ -42,13 +42,6 @@ scoped_ptr<FileTracker> FindTrackerByID(MetadataDatabase* metadata_database, ...@@ -42,13 +42,6 @@ scoped_ptr<FileTracker> FindTrackerByID(MetadataDatabase* metadata_database,
return scoped_ptr<FileTracker>(); return scoped_ptr<FileTracker>();
} }
void ReturnRetryOnSuccess(const SyncStatusCallback& callback,
SyncStatusCode status) {
if (status == SYNC_STATUS_OK)
status = SYNC_STATUS_RETRY;
callback.Run(status);
}
bool IsLocalFileMissing(const SyncFileMetadata& local_metadata, bool IsLocalFileMissing(const SyncFileMetadata& local_metadata,
const FileChange& local_change) { const FileChange& local_change) {
return local_metadata.file_type == SYNC_FILE_TYPE_UNKNOWN || return local_metadata.file_type == SYNC_FILE_TYPE_UNKNOWN ||
...@@ -442,10 +435,7 @@ void LocalToRemoteSyncer::DidUploadExistingFile( ...@@ -442,10 +435,7 @@ void LocalToRemoteSyncer::DidUploadExistingFile(
needs_remote_change_listing_ = true; needs_remote_change_listing_ = true;
UpdateRemoteMetadata( UpdateRemoteMetadata(
remote_file_tracker_->file_id(), remote_file_tracker_->file_id(),
base::Bind(&ReturnRetryOnSuccess, token.Pass());
base::Bind(&LocalToRemoteSyncer::SyncCompleted,
weak_ptr_factory_.GetWeakPtr(),
base::Passed(&token))));
return; return;
} }
...@@ -506,41 +496,49 @@ void LocalToRemoteSyncer::DidUpdateDatabaseForUploadExistingFile( ...@@ -506,41 +496,49 @@ void LocalToRemoteSyncer::DidUpdateDatabaseForUploadExistingFile(
void LocalToRemoteSyncer::UpdateRemoteMetadata( void LocalToRemoteSyncer::UpdateRemoteMetadata(
const std::string& file_id, const std::string& file_id,
const SyncStatusCallback& callback) { scoped_ptr<SyncTaskToken> token) {
DCHECK(remote_file_tracker_); DCHECK(remote_file_tracker_);
drive_service()->GetFileResource( drive_service()->GetFileResource(
file_id, file_id,
base::Bind(&LocalToRemoteSyncer::DidGetRemoteMetadata, base::Bind(&LocalToRemoteSyncer::DidGetRemoteMetadata,
weak_ptr_factory_.GetWeakPtr(), weak_ptr_factory_.GetWeakPtr(),
file_id, callback)); file_id, base::Passed(&token)));
} }
void LocalToRemoteSyncer::DidGetRemoteMetadata( void LocalToRemoteSyncer::DidGetRemoteMetadata(
const std::string& file_id, const std::string& file_id,
const SyncStatusCallback& callback, scoped_ptr<SyncTaskToken> token,
google_apis::GDataErrorCode error, google_apis::GDataErrorCode error,
scoped_ptr<google_apis::FileResource> entry) { scoped_ptr<google_apis::FileResource> entry) {
DCHECK(sync_context_->GetWorkerTaskRunner()->RunsTasksOnCurrentThread()); DCHECK(sync_context_->GetWorkerTaskRunner()->RunsTasksOnCurrentThread());
if (error == google_apis::HTTP_NOT_FOUND) { if (error == google_apis::HTTP_NOT_FOUND) {
metadata_database()->UpdateByDeletedRemoteFile(file_id, callback); metadata_database()->UpdateByDeletedRemoteFile(
file_id,
base::Bind(&LocalToRemoteSyncer::CompleteWithRetryStatus,
weak_ptr_factory_.GetWeakPtr(),
base::Passed(&token)));
return; return;
} }
SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error); SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error);
if (status != SYNC_STATUS_OK) { if (status != SYNC_STATUS_OK) {
callback.Run(status); SyncCompleted(token.Pass(), status);
return; return;
} }
if (!entry) { if (!entry) {
NOTREACHED(); NOTREACHED();
callback.Run(SYNC_STATUS_FAILED); SyncCompleted(token.Pass(), SYNC_STATUS_FAILED);
return; return;
} }
metadata_database()->UpdateByFileResource(*entry, callback); metadata_database()->UpdateByFileResource(
*entry,
base::Bind(&LocalToRemoteSyncer::CompleteWithRetryStatus,
weak_ptr_factory_.GetWeakPtr(),
base::Passed(&token)));
} }
void LocalToRemoteSyncer::DidDeleteForUploadNewFile( void LocalToRemoteSyncer::DidDeleteForUploadNewFile(
...@@ -549,10 +547,7 @@ void LocalToRemoteSyncer::DidDeleteForUploadNewFile( ...@@ -549,10 +547,7 @@ void LocalToRemoteSyncer::DidDeleteForUploadNewFile(
if (status == SYNC_STATUS_HAS_CONFLICT) { if (status == SYNC_STATUS_HAS_CONFLICT) {
UpdateRemoteMetadata( UpdateRemoteMetadata(
remote_file_tracker_->file_id(), remote_file_tracker_->file_id(),
base::Bind(&ReturnRetryOnSuccess, token.Pass());
base::Bind(&LocalToRemoteSyncer::SyncCompleted,
weak_ptr_factory_.GetWeakPtr(),
base::Passed(&token))));
return; return;
} }
...@@ -568,12 +563,7 @@ void LocalToRemoteSyncer::DidDeleteForCreateFolder( ...@@ -568,12 +563,7 @@ void LocalToRemoteSyncer::DidDeleteForCreateFolder(
scoped_ptr<SyncTaskToken> token, scoped_ptr<SyncTaskToken> token,
SyncStatusCode status) { SyncStatusCode status) {
if (status == SYNC_STATUS_HAS_CONFLICT) { if (status == SYNC_STATUS_HAS_CONFLICT) {
UpdateRemoteMetadata( UpdateRemoteMetadata(remote_file_tracker_->file_id(), token.Pass());
remote_file_tracker_->file_id(),
base::Bind(&ReturnRetryOnSuccess,
base::Bind(&LocalToRemoteSyncer::SyncCompleted,
weak_ptr_factory_.GetWeakPtr(),
base::Passed(&token))));
return; return;
} }
...@@ -720,5 +710,13 @@ MetadataDatabase* LocalToRemoteSyncer::metadata_database() { ...@@ -720,5 +710,13 @@ MetadataDatabase* LocalToRemoteSyncer::metadata_database() {
return sync_context_->GetMetadataDatabase(); return sync_context_->GetMetadataDatabase();
} }
void LocalToRemoteSyncer::CompleteWithRetryStatus(
scoped_ptr<SyncTaskToken> token,
SyncStatusCode status) {
if (status == SYNC_STATUS_OK)
status = SYNC_STATUS_RETRY;
SyncCompleted(token.Pass(), status);
}
} // namespace drive_backend } // namespace drive_backend
} // namespace sync_file_system } // namespace sync_file_system
...@@ -78,9 +78,9 @@ class LocalToRemoteSyncer : public SyncTask { ...@@ -78,9 +78,9 @@ class LocalToRemoteSyncer : public SyncTask {
scoped_ptr<SyncTaskToken> token, scoped_ptr<SyncTaskToken> token,
SyncStatusCode status); SyncStatusCode status);
void UpdateRemoteMetadata(const std::string& file_id, void UpdateRemoteMetadata(const std::string& file_id,
const SyncStatusCallback& callback); scoped_ptr<SyncTaskToken> token);
void DidGetRemoteMetadata(const std::string& file_id, void DidGetRemoteMetadata(const std::string& file_id,
const SyncStatusCallback& callback, scoped_ptr<SyncTaskToken> token,
google_apis::GDataErrorCode error, google_apis::GDataErrorCode error,
scoped_ptr<google_apis::FileResource> entry); scoped_ptr<google_apis::FileResource> entry);
...@@ -107,6 +107,9 @@ class LocalToRemoteSyncer : public SyncTask { ...@@ -107,6 +107,9 @@ class LocalToRemoteSyncer : public SyncTask {
drive::DriveUploaderInterface* drive_uploader(); drive::DriveUploaderInterface* drive_uploader();
MetadataDatabase* metadata_database(); MetadataDatabase* metadata_database();
void CompleteWithRetryStatus(scoped_ptr<SyncTaskToken> token,
SyncStatusCode status);
SyncEngineContext* sync_context_; // Not owned. SyncEngineContext* sync_context_; // Not owned.
FileChange local_change_; FileChange local_change_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment