Index: sync/engine/sync_scheduler_impl.h |
diff --git a/sync/engine/sync_scheduler_impl.h b/sync/engine/sync_scheduler_impl.h |
index dfdcc8040802cb756ffc28ce3dbfd09d10161691..baf1eb88f942edbaf88010739c73902374dd72d3 100644 |
--- a/sync/engine/sync_scheduler_impl.h |
+++ b/sync/engine/sync_scheduler_impl.h |
@@ -21,8 +21,8 @@ |
#include "sync/base/sync_export.h" |
#include "sync/engine/net/server_connection_manager.h" |
#include "sync/engine/nudge_source.h" |
+#include "sync/engine/nudge_tracker.h" |
#include "sync/engine/sync_scheduler.h" |
-#include "sync/engine/sync_session_job.h" |
#include "sync/engine/syncer.h" |
#include "sync/internal_api/public/base/model_type_invalidation_map.h" |
#include "sync/internal_api/public/engine/polling_constants.h" |
@@ -34,6 +34,10 @@ namespace syncer { |
class BackoffDelayProvider; |
+namespace sessions { |
+struct ModelNeutralState; |
+} // namespace sessions |
tim (not reviewing)
2013/04/15 22:37:49
nit - don't need comment.
rlarocque
2013/04/16 01:30:26
Done.
|
+ |
class SYNC_EXPORT_PRIVATE SyncSchedulerImpl |
: public SyncScheduler, |
public base::NonThreadSafe { |
@@ -83,15 +87,6 @@ class SYNC_EXPORT_PRIVATE SyncSchedulerImpl |
const sessions::SyncSessionSnapshot& snapshot) OVERRIDE; |
private: |
- enum JobProcessDecision { |
- // Indicates we should continue with the current job. |
- CONTINUE, |
- // Indicates that we should save it to be processed later. |
- SAVE, |
- // Indicates we should drop this job. |
- DROP, |
- }; |
- |
enum JobPriority { |
// Non-canary jobs respect exponential backoff. |
NORMAL_PRIORITY, |
@@ -103,6 +98,7 @@ class SYNC_EXPORT_PRIVATE SyncSchedulerImpl |
friend class SyncSchedulerWhiteboxTest; |
friend class SyncerTest; |
+ FRIEND_TEST_ALL_PREFIXES(SyncSchedulerWhiteboxTest, NoNudgesInConfigureMode); |
FRIEND_TEST_ALL_PREFIXES(SyncSchedulerWhiteboxTest, |
DropNudgeWhileExponentialBackOff); |
FRIEND_TEST_ALL_PREFIXES(SyncSchedulerWhiteboxTest, SaveNudge); |
@@ -145,57 +141,32 @@ class SYNC_EXPORT_PRIVATE SyncSchedulerImpl |
static const char* GetModeString(Mode mode); |
- static const char* GetDecisionString(JobProcessDecision decision); |
- |
- // Invoke the syncer to perform a non-POLL job. |
- bool DoSyncSessionJobImpl(scoped_ptr<SyncSessionJob> job, |
- JobPriority priority); |
- |
// Invoke the syncer to perform a nudge job. |
void DoNudgeSyncSessionJob(JobPriority priority); |
// Invoke the syncer to perform a configuration job. |
bool DoConfigurationSyncSessionJob(JobPriority priority); |
- // Returns whether or not it's safe to run a poll job at this time. |
- bool ShouldPoll(); |
- |
// Invoke the Syncer to perform a poll job. |
void DoPollSyncSessionJob(); |
- // Called after the Syncer has performed the sync represented by |job|, to |
- // reset our state. |exited_prematurely| is true if the Syncer did not |
- // cycle from job.start_step() to job.end_step(), likely because the |
- // scheduler was forced to quit the job mid-way through. |
- bool FinishSyncSessionJob(SyncSessionJob* job, |
- bool exited_prematurely, |
- sessions::SyncSession* session); |
- |
- // Helper to schedule retries of a failed configure or nudge job. |
- void ScheduleNextSync(scoped_ptr<SyncSessionJob> finished_job, |
- sessions::SyncSession* session); |
- |
- // Helper to configure polling intervals. Used by Start and ScheduleNextSync. |
- void AdjustPolling(const SyncSessionJob* old_job); |
+ // Helper to configure polling intervals. |
+ void AdjustPolling(bool force_reset); |
tim (not reviewing)
2013/04/15 22:37:49
nit - enum vs bool parameter as the intent of the
rlarocque
2013/04/16 01:30:26
I'd prefer to not add another enum in that style.
|
// Helper to restart waiting with |wait_interval_|'s timer. |
void RestartWaiting(); |
- // Helper to ScheduleNextSync in case of consecutive sync errors. |
- void HandleContinuationError(scoped_ptr<SyncSessionJob> old_job, |
- sessions::SyncSession* session); |
+ // Helper to adjust our wait interval when we expereince a transient failure. |
+ void UpdateExponentialBackoff( |
+ const sessions::ModelNeutralState& model_neutral_state); |
- // Decide whether we should CONTINUE, SAVE or DROP the job. |
- JobProcessDecision DecideOnJob(const SyncSessionJob& job, |
- JobPriority priority); |
+ // Determines if we're allowed to contact the server right now. |
+ bool CanRunJobNow(JobPriority priority); |
- // Decide on whether to CONTINUE, SAVE or DROP the job when we are in |
- // backoff mode. |
- JobProcessDecision DecideWhileInWaitInterval(const SyncSessionJob& job, |
- JobPriority priority); |
+ // Determines if we're allowed to contact the server right now. |
+ bool CanRunNudgeJobNow(JobPriority priority); |
- // 'Impl' here refers to real implementation of public functions, running on |
- // |thread_|. |
+ // 'Impl' here refers to real implementation of public functions. |
void StopImpl(const base::Closure& callback); |
// If the scheduler's current state supports it, this will create a job based |
@@ -230,9 +201,9 @@ class SYNC_EXPORT_PRIVATE SyncSchedulerImpl |
// Creates a session for a poll and performs the sync. |
void PollTimerCallback(); |
- // Called once the first time thread_ is started to broadcast an initial |
- // session snapshot containing data like initial_sync_ended. Important when |
- // the client starts up and does not need to perform an initial sync. |
+ // Called as we are started to broadcast an initial session snapshot |
+ // containing data like initial_sync_ended. Important when the client starts |
+ // up and does not need to perform an initial sync. |
void SendInitialSnapshot(); |
// This is used for histogramming and analysis of ScheduleNudge* APIs. |
@@ -280,13 +251,15 @@ class SYNC_EXPORT_PRIVATE SyncSchedulerImpl |
// The event that will wake us up. |
base::OneShotTimer<SyncSchedulerImpl> pending_wakeup_timer_; |
- // Pending configure job storage. Note that |
- // (mode_ != CONFIGURATION_MODE) \implies !pending_configure_job_. |
- scoped_ptr<SyncSessionJob> pending_configure_job_; |
+ // Storage for variables related to an in-progress configure request. Note |
+ // that (mode_ != CONFIGURATION_MODE) \implies !pending_configure_params_. |
+ scoped_ptr<ConfigurationParams> pending_configure_params_; |
+ |
+ // If we have a nudge pending to run soon, it will be listed here. |
+ base::TimeTicks scheduled_nudge_time_; |
- // Pending nudge job storage. These jobs can exist in CONFIGURATION_MODE, but |
- // they will be run only in NORMAL_MODE. |
- scoped_ptr<SyncSessionJob> pending_nudge_job_; |
+ // Keeps track of work that the syncer needs to handle. |
+ NudgeTracker nudge_tracker_; |
// Invoked to run through the sync cycle. |
scoped_ptr<Syncer> syncer_; |