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

Side by Side Diff: sync/engine/sync_scheduler_impl.h

Issue 13422003: sync: Refactor job ownership in SyncScheduler (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove nudge while in backoff Created 7 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | sync/engine/sync_scheduler_impl.cc » ('j') | sync/engine/sync_scheduler_impl.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 SYNC_ENGINE_SYNC_SCHEDULER_IMPL_H_ 5 #ifndef SYNC_ENGINE_SYNC_SCHEDULER_IMPL_H_
6 #define SYNC_ENGINE_SYNC_SCHEDULER_IMPL_H_ 6 #define SYNC_ENGINE_SYNC_SCHEDULER_IMPL_H_
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 10
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 ServerConnectionChangeDuringBackoff); 124 ServerConnectionChangeDuringBackoff);
125 FRIEND_TEST_ALL_PREFIXES(SyncSchedulerTest, 125 FRIEND_TEST_ALL_PREFIXES(SyncSchedulerTest,
126 ConnectionChangeCanaryPreemptedByNudge); 126 ConnectionChangeCanaryPreemptedByNudge);
127 127
128 struct SYNC_EXPORT_PRIVATE WaitInterval { 128 struct SYNC_EXPORT_PRIVATE WaitInterval {
129 enum Mode { 129 enum Mode {
130 // Uninitialized state, should not be set in practice. 130 // Uninitialized state, should not be set in practice.
131 UNKNOWN = -1, 131 UNKNOWN = -1,
132 // A wait interval whose duration has been affected by exponential 132 // A wait interval whose duration has been affected by exponential
133 // backoff. 133 // backoff.
134 // EXPONENTIAL_BACKOFF intervals are nudge-rate limited to 1 per interval. 134 // EXPONENTIAL_BACKOFF intervals are nudge-rate limited to 1 per interval.
tim (not reviewing) 2013/04/05 16:56:44 Amend comment.
rlarocque 2013/04/05 19:13:29 Done.
135 EXPONENTIAL_BACKOFF, 135 EXPONENTIAL_BACKOFF,
136 // A server-initiated throttled interval. We do not allow any syncing 136 // A server-initiated throttled interval. We do not allow any syncing
137 // during such an interval. 137 // during such an interval.
138 THROTTLED, 138 THROTTLED,
139 }; 139 };
140 WaitInterval(); 140 WaitInterval();
141 ~WaitInterval(); 141 ~WaitInterval();
142 WaitInterval(Mode mode, base::TimeDelta length); 142 WaitInterval(Mode mode, base::TimeDelta length);
143 143
144 static const char* GetModeString(Mode mode); 144 static const char* GetModeString(Mode mode);
145 145
146 Mode mode; 146 Mode mode;
147 147
148 // This bool is set to true if we have observed a nudge during this 148 // This bool is set to true if we have observed a nudge during this
tim (not reviewing) 2013/04/05 16:56:44 Remove comment.
rlarocque 2013/04/05 19:13:29 Done.
149 // interval and mode == EXPONENTIAL_BACKOFF. 149 // interval and mode == EXPONENTIAL_BACKOFF.
150 bool had_nudge;
151 base::TimeDelta length; 150 base::TimeDelta length;
152 base::OneShotTimer<SyncSchedulerImpl> timer;
153 }; 151 };
154 152
155 static const char* GetModeString(Mode mode); 153 static const char* GetModeString(Mode mode);
156 154
157 static const char* GetDecisionString(JobProcessDecision decision); 155 static const char* GetDecisionString(JobProcessDecision decision);
158 156
159 // Helper to cancel any existing delayed task and replace it with a new one.
160 // It will not post any tasks if the scheduler is in a "stopped" state.
161 void PostDelayedTask(const tracked_objects::Location& from_here,
162 const char* name,
163 const base::Closure& task,
164 base::TimeDelta delay);
165
166 // Invoke the syncer to perform a non-POLL job. 157 // Invoke the syncer to perform a non-POLL job.
167 bool DoSyncSessionJobImpl(scoped_ptr<SyncSessionJob> job, 158 bool DoSyncSessionJobImpl(scoped_ptr<SyncSessionJob> job,
168 JobPriority priority); 159 JobPriority priority);
169 160
170 // Invoke the syncer to perform a nudge job. 161 // Invoke the syncer to perform a nudge job.
171 bool DoNudgeSyncSessionJob(JobPriority priority); 162 void DoNudgeSyncSessionJob(JobPriority priority);
172 163
173 // Invoke the syncer to perform a configuration job. 164 // Invoke the syncer to perform a configuration job.
174 bool DoConfigurationSyncSessionJob(JobPriority priority); 165 bool DoConfigurationSyncSessionJob(JobPriority priority);
175 166
176 // Returns whether or not it's safe to run a poll job at this time. 167 // Returns whether or not it's safe to run a poll job at this time.
177 bool ShouldPoll(); 168 bool ShouldPoll();
178 169
179 // Invoke the Syncer to perform a poll job. 170 // Invoke the Syncer to perform a poll job.
180 void DoPollSyncSessionJob(); 171 void DoPollSyncSessionJob();
181 172
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 base::RepeatingTimer<SyncSchedulerImpl> poll_timer_; 286 base::RepeatingTimer<SyncSchedulerImpl> poll_timer_;
296 287
297 // The mode of operation. 288 // The mode of operation.
298 Mode mode_; 289 Mode mode_;
299 290
300 // Current wait state. Null if we're not in backoff and not throttled. 291 // Current wait state. Null if we're not in backoff and not throttled.
301 scoped_ptr<WaitInterval> wait_interval_; 292 scoped_ptr<WaitInterval> wait_interval_;
302 293
303 scoped_ptr<BackoffDelayProvider> delay_provider_; 294 scoped_ptr<BackoffDelayProvider> delay_provider_;
304 295
305 // We allow at most one PostedTask to be pending at one time. This is it. 296 // The event that will wake us up.
306 // We will cancel this task before starting a new one. 297 base::OneShotTimer<SyncSchedulerImpl> pending_wakeup_timer_;
307 base::CancelableClosure pending_wakeup_event_;
308 298
309 // Pending configure job storage. Note that 299 // Pending configure job storage. Note that
310 // (mode_ != CONFIGURATION_MODE) \implies !pending_configure_job_. 300 // (mode_ != CONFIGURATION_MODE) \implies !pending_configure_job_.
311 scoped_ptr<SyncSessionJob> pending_configure_job_; 301 scoped_ptr<SyncSessionJob> pending_configure_job_;
312 302
313 // Pending nudge job storage. These jobs can exist in CONFIGURATION_MODE, but 303 // Pending nudge job storage. These jobs can exist in CONFIGURATION_MODE, but
314 // they will be run only in NORMAL_MODE. 304 // they will be run only in NORMAL_MODE.
315 scoped_ptr<SyncSessionJob> pending_nudge_job_; 305 scoped_ptr<SyncSessionJob> pending_nudge_job_;
316 306
317 // Invoked to run through the sync cycle. 307 // Invoked to run through the sync cycle.
(...skipping 13 matching lines...) Expand all
331 // take place during a sync cycle. We call this out because such violations 321 // take place during a sync cycle. We call this out because such violations
332 // could result in tight sync loops hitting sync servers. 322 // could result in tight sync loops hitting sync servers.
333 bool no_scheduling_allowed_; 323 bool no_scheduling_allowed_;
334 324
335 DISALLOW_COPY_AND_ASSIGN(SyncSchedulerImpl); 325 DISALLOW_COPY_AND_ASSIGN(SyncSchedulerImpl);
336 }; 326 };
337 327
338 } // namespace syncer 328 } // namespace syncer
339 329
340 #endif // SYNC_ENGINE_SYNC_SCHEDULER_IMPL_H_ 330 #endif // SYNC_ENGINE_SYNC_SCHEDULER_IMPL_H_
OLDNEW
« no previous file with comments | « no previous file | sync/engine/sync_scheduler_impl.cc » ('j') | sync/engine/sync_scheduler_impl.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698