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

Unified Diff: sync/engine/sync_scheduler_impl.h

Issue 124083002: Client-side changes to support retry GU. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: sync/engine/sync_scheduler_impl.h
diff --git a/sync/engine/sync_scheduler_impl.h b/sync/engine/sync_scheduler_impl.h
index 81a4fcf68d1534d0c2bd703102294d0e71ab7a52..34f7161bb54d5f9466d9dbb96a5da3a88cc0c543 100644
--- a/sync/engine/sync_scheduler_impl.h
+++ b/sync/engine/sync_scheduler_impl.h
@@ -89,6 +89,7 @@ class SYNC_EXPORT_PRIVATE SyncSchedulerImpl
virtual void OnReceivedClientInvalidationHintBufferSize(int size) OVERRIDE;
virtual void OnSyncProtocolError(
const sessions::SyncSessionSnapshot& snapshot) OVERRIDE;
+ virtual void OnReceivedGuRetryDelaySeconds(int delay_seconds) OVERRIDE;
private:
enum JobPriority {
@@ -154,9 +155,6 @@ class SYNC_EXPORT_PRIVATE SyncSchedulerImpl
static const char* GetModeString(Mode mode);
- // Invoke the syncer to perform a nudge job.
- void DoNudgeSyncSessionJob(JobPriority priority);
-
// Invoke the syncer to perform a configuration job.
void DoConfigurationSyncSessionJob(JobPriority priority);
@@ -164,8 +162,17 @@ class SYNC_EXPORT_PRIVATE SyncSchedulerImpl
void HandleFailure(
const sessions::ModelNeutralState& model_neutral_state);
- // Invoke the Syncer to perform a poll job.
- void DoPollSyncSessionJob();
+ // Invoke the syncer to perform a nudge job. Return true if session didn't
+ // abort pre-maturely.
+ bool DoNudgeSyncSessionJob(sessions::SyncSession* session);
+
+ // Invoke the Syncer to perform a poll job. Return true if session didn't
+ // abort pre-maturely.
+ bool DoPollSyncSessionJob(sessions::SyncSession* session);
+
+ // Invoke the Syncer to perform a retry job. Return true if session didn't
+ // abort pre-maturely.
+ bool DoRetrySyncSessionJob(sessions::SyncSession* session);
// Helper function to calculate poll interval.
base::TimeDelta GetPollInterval();
@@ -212,6 +219,9 @@ class SYNC_EXPORT_PRIVATE SyncSchedulerImpl
void TrySyncSessionJob();
void TrySyncSessionJobImpl();
+ // Post-processing according to session result.
+ void SyncSessionPostProcessing(sessions::SyncSession* session);
+
// Transitions out of the THROTTLED WaitInterval then calls TryCanaryJob().
void Unthrottle();
@@ -230,6 +240,9 @@ class SYNC_EXPORT_PRIVATE SyncSchedulerImpl
// Creates a session for a poll and performs the sync.
void PollTimerCallback();
+ // Creates a session for a retry and performs the sync.
+ void RetryTimerCallback();
+
// Returns the set of types that are enabled and not currently throttled.
ModelTypeSet GetEnabledAndUnthrottledTypes();
@@ -336,6 +349,9 @@ class SYNC_EXPORT_PRIVATE SyncSchedulerImpl
// to be const and alleviate threading concerns.
base::WeakPtrFactory<SyncSchedulerImpl> weak_ptr_factory_for_weak_handle_;
+ // One-shot timer for scheduling GU retry according to delay set by server.
+ base::OneShotTimer<SyncSchedulerImpl> retry_timer_;
+
DISALLOW_COPY_AND_ASSIGN(SyncSchedulerImpl);
};

Powered by Google App Engine
This is Rietveld 408576698