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 // A class to schedule syncer tasks intelligently. | 5 // A class to schedule syncer tasks intelligently. |
6 #ifndef SYNC_ENGINE_SYNC_SCHEDULER_H_ | 6 #ifndef SYNC_ENGINE_SYNC_SCHEDULER_H_ |
7 #define SYNC_ENGINE_SYNC_SCHEDULER_H_ | 7 #define SYNC_ENGINE_SYNC_SCHEDULER_H_ |
8 #pragma once | 8 #pragma once |
9 | 9 |
10 #include <string> | 10 #include <string> |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 linked_ptr<sessions::SyncSession> session; | 172 linked_ptr<sessions::SyncSession> session; |
173 bool is_canary_job; | 173 bool is_canary_job; |
174 | 174 |
175 // This is the location the job came from. Used for debugging. | 175 // This is the location the job came from. Used for debugging. |
176 // In case of multiple nudges getting coalesced this stores the | 176 // In case of multiple nudges getting coalesced this stores the |
177 // first location that came in. | 177 // first location that came in. |
178 tracked_objects::Location from_here; | 178 tracked_objects::Location from_here; |
179 }; | 179 }; |
180 friend class SyncSchedulerTest; | 180 friend class SyncSchedulerTest; |
181 friend class SyncSchedulerWhiteboxTest; | 181 friend class SyncSchedulerWhiteboxTest; |
| 182 friend class SyncerTest; |
182 | 183 |
183 FRIEND_TEST_ALL_PREFIXES(SyncSchedulerWhiteboxTest, | 184 FRIEND_TEST_ALL_PREFIXES(SyncSchedulerWhiteboxTest, |
184 DropNudgeWhileExponentialBackOff); | 185 DropNudgeWhileExponentialBackOff); |
185 FRIEND_TEST_ALL_PREFIXES(SyncSchedulerWhiteboxTest, SaveNudge); | 186 FRIEND_TEST_ALL_PREFIXES(SyncSchedulerWhiteboxTest, SaveNudge); |
186 FRIEND_TEST_ALL_PREFIXES(SyncSchedulerWhiteboxTest, | 187 FRIEND_TEST_ALL_PREFIXES(SyncSchedulerWhiteboxTest, |
187 SaveNudgeWhileTypeThrottled); | 188 SaveNudgeWhileTypeThrottled); |
188 FRIEND_TEST_ALL_PREFIXES(SyncSchedulerWhiteboxTest, ContinueNudge); | 189 FRIEND_TEST_ALL_PREFIXES(SyncSchedulerWhiteboxTest, ContinueNudge); |
189 FRIEND_TEST_ALL_PREFIXES(SyncSchedulerWhiteboxTest, DropPoll); | 190 FRIEND_TEST_ALL_PREFIXES(SyncSchedulerWhiteboxTest, DropPoll); |
190 FRIEND_TEST_ALL_PREFIXES(SyncSchedulerWhiteboxTest, ContinuePoll); | 191 FRIEND_TEST_ALL_PREFIXES(SyncSchedulerWhiteboxTest, ContinuePoll); |
191 FRIEND_TEST_ALL_PREFIXES(SyncSchedulerWhiteboxTest, ContinueConfiguration); | 192 FRIEND_TEST_ALL_PREFIXES(SyncSchedulerWhiteboxTest, ContinueConfiguration); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 | 241 |
241 // Configure jobs are saved only when backing off or throttling. So we | 242 // Configure jobs are saved only when backing off or throttling. So we |
242 // expose the pointer here. | 243 // expose the pointer here. |
243 scoped_ptr<SyncSessionJob> pending_configure_job; | 244 scoped_ptr<SyncSessionJob> pending_configure_job; |
244 }; | 245 }; |
245 | 246 |
246 static const char* GetModeString(Mode mode); | 247 static const char* GetModeString(Mode mode); |
247 | 248 |
248 static const char* GetDecisionString(JobProcessDecision decision); | 249 static const char* GetDecisionString(JobProcessDecision decision); |
249 | 250 |
| 251 // Assign |start| and |end| to appropriate SyncerStep values for the |
| 252 // specified |purpose|. |
| 253 static void SetSyncerStepsForPurpose( |
| 254 SyncSessionJob::SyncSessionJobPurpose purpose, |
| 255 SyncerStep* start, SyncerStep* end); |
| 256 |
250 // Helpers that log before posting to |sync_loop_|. These will only post | 257 // Helpers that log before posting to |sync_loop_|. These will only post |
251 // the task in between calls to Start/Stop. | 258 // the task in between calls to Start/Stop. |
252 void PostTask(const tracked_objects::Location& from_here, | 259 void PostTask(const tracked_objects::Location& from_here, |
253 const char* name, | 260 const char* name, |
254 const base::Closure& task); | 261 const base::Closure& task); |
255 void PostDelayedTask(const tracked_objects::Location& from_here, | 262 void PostDelayedTask(const tracked_objects::Location& from_here, |
256 const char* name, | 263 const char* name, |
257 const base::Closure& task, | 264 const base::Closure& task, |
258 base::TimeDelta delay); | 265 base::TimeDelta delay); |
259 | 266 |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 // Called when the root cause of the current connection error is fixed. | 340 // Called when the root cause of the current connection error is fixed. |
334 void OnServerConnectionErrorFixed(); | 341 void OnServerConnectionErrorFixed(); |
335 | 342 |
336 // The pointer is owned by the caller. | 343 // The pointer is owned by the caller. |
337 browser_sync::sessions::SyncSession* CreateSyncSession( | 344 browser_sync::sessions::SyncSession* CreateSyncSession( |
338 const browser_sync::sessions::SyncSourceInfo& info); | 345 const browser_sync::sessions::SyncSourceInfo& info); |
339 | 346 |
340 // Creates a session for a poll and performs the sync. | 347 // Creates a session for a poll and performs the sync. |
341 void PollTimerCallback(); | 348 void PollTimerCallback(); |
342 | 349 |
343 // Assign |start| and |end| to appropriate SyncerStep values for the | |
344 // specified |purpose|. | |
345 void SetSyncerStepsForPurpose(SyncSessionJob::SyncSessionJobPurpose purpose, | |
346 SyncerStep* start, | |
347 SyncerStep* end); | |
348 | |
349 // Used to update |connection_code_|, see below. | 350 // Used to update |connection_code_|, see below. |
350 void UpdateServerConnectionManagerStatus( | 351 void UpdateServerConnectionManagerStatus( |
351 HttpResponse::ServerConnectionCode code); | 352 HttpResponse::ServerConnectionCode code); |
352 | 353 |
353 // Called once the first time thread_ is started to broadcast an initial | 354 // Called once the first time thread_ is started to broadcast an initial |
354 // session snapshot containing data like initial_sync_ended. Important when | 355 // session snapshot containing data like initial_sync_ended. Important when |
355 // the client starts up and does not need to perform an initial sync. | 356 // the client starts up and does not need to perform an initial sync. |
356 void SendInitialSnapshot(); | 357 void SendInitialSnapshot(); |
357 | 358 |
358 virtual void OnActionableError(const sessions::SyncSessionSnapshot& snapshot); | 359 virtual void OnActionableError(const sessions::SyncSessionSnapshot& snapshot); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
409 scoped_ptr<Syncer> syncer_; | 410 scoped_ptr<Syncer> syncer_; |
410 | 411 |
411 scoped_ptr<sessions::SyncSessionContext> session_context_; | 412 scoped_ptr<sessions::SyncSessionContext> session_context_; |
412 | 413 |
413 DISALLOW_COPY_AND_ASSIGN(SyncScheduler); | 414 DISALLOW_COPY_AND_ASSIGN(SyncScheduler); |
414 }; | 415 }; |
415 | 416 |
416 } // namespace browser_sync | 417 } // namespace browser_sync |
417 | 418 |
418 #endif // SYNC_ENGINE_SYNC_SCHEDULER_H_ | 419 #endif // SYNC_ENGINE_SYNC_SCHEDULER_H_ |
OLD | NEW |