OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 run the syncer on a thread. | 5 // A class to run the syncer on a thread. |
6 // This is the default implementation of SyncerThread whose Stop implementation | 6 // This is the default implementation of SyncerThread whose Stop implementation |
7 // does not support a timeout, but is greatly simplified. | 7 // does not support a timeout, but is greatly simplified. |
8 #ifndef CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_ | 8 #ifndef CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_ |
9 #define CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_ | 9 #define CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_ |
10 | 10 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 public ChannelEventHandler<SyncerEvent> { | 50 public ChannelEventHandler<SyncerEvent> { |
51 FRIEND_TEST_ALL_PREFIXES(SyncerThreadTest, CalculateSyncWaitTime); | 51 FRIEND_TEST_ALL_PREFIXES(SyncerThreadTest, CalculateSyncWaitTime); |
52 FRIEND_TEST_ALL_PREFIXES(SyncerThreadTest, CalculatePollingWaitTime); | 52 FRIEND_TEST_ALL_PREFIXES(SyncerThreadTest, CalculatePollingWaitTime); |
53 FRIEND_TEST_ALL_PREFIXES(SyncerThreadWithSyncerTest, Polling); | 53 FRIEND_TEST_ALL_PREFIXES(SyncerThreadWithSyncerTest, Polling); |
54 FRIEND_TEST_ALL_PREFIXES(SyncerThreadWithSyncerTest, Nudge); | 54 FRIEND_TEST_ALL_PREFIXES(SyncerThreadWithSyncerTest, Nudge); |
55 FRIEND_TEST_ALL_PREFIXES(SyncerThreadWithSyncerTest, Throttling); | 55 FRIEND_TEST_ALL_PREFIXES(SyncerThreadWithSyncerTest, Throttling); |
56 FRIEND_TEST_ALL_PREFIXES(SyncerThreadWithSyncerTest, AuthInvalid); | 56 FRIEND_TEST_ALL_PREFIXES(SyncerThreadWithSyncerTest, AuthInvalid); |
57 FRIEND_TEST_ALL_PREFIXES(SyncerThreadWithSyncerTest, Pause); | 57 FRIEND_TEST_ALL_PREFIXES(SyncerThreadWithSyncerTest, Pause); |
58 FRIEND_TEST_ALL_PREFIXES(SyncerThreadWithSyncerTest, StartWhenNotConnected); | 58 FRIEND_TEST_ALL_PREFIXES(SyncerThreadWithSyncerTest, StartWhenNotConnected); |
59 FRIEND_TEST_ALL_PREFIXES(SyncerThreadWithSyncerTest, PauseWhenNotConnected); | 59 FRIEND_TEST_ALL_PREFIXES(SyncerThreadWithSyncerTest, PauseWhenNotConnected); |
| 60 FRIEND_TEST_ALL_PREFIXES(SyncerThreadWithSyncerTest, StopSyncPermanently); |
60 friend class SyncerThreadWithSyncerTest; | 61 friend class SyncerThreadWithSyncerTest; |
61 friend class SyncerThreadFactory; | 62 friend class SyncerThreadFactory; |
62 public: | 63 public: |
63 // Encapsulates the parameters that make up an interval on which the | 64 // Encapsulates the parameters that make up an interval on which the |
64 // syncer thread is sleeping. | 65 // syncer thread is sleeping. |
65 struct WaitInterval { | 66 struct WaitInterval { |
66 enum Mode { | 67 enum Mode { |
67 // A wait interval whose duration has not been affected by exponential | 68 // A wait interval whose duration has not been affected by exponential |
68 // backoff. The base case for exponential backoff falls in to this case | 69 // backoff. The base case for exponential backoff falls in to this case |
69 // (e.g when the exponent is 1). So far, we don't need a separate case. | 70 // (e.g when the exponent is 1). So far, we don't need a separate case. |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 const syncable::DirectoryManagerEvent& event); | 230 const syncable::DirectoryManagerEvent& event); |
230 void HandleChannelEvent(const SyncerEvent& event); | 231 void HandleChannelEvent(const SyncerEvent& event); |
231 | 232 |
232 // SyncSession::Delegate implementation. | 233 // SyncSession::Delegate implementation. |
233 virtual void OnSilencedUntil(const base::TimeTicks& silenced_until); | 234 virtual void OnSilencedUntil(const base::TimeTicks& silenced_until); |
234 virtual bool IsSyncingCurrentlySilenced(); | 235 virtual bool IsSyncingCurrentlySilenced(); |
235 virtual void OnReceivedShortPollIntervalUpdate( | 236 virtual void OnReceivedShortPollIntervalUpdate( |
236 const base::TimeDelta& new_interval); | 237 const base::TimeDelta& new_interval); |
237 virtual void OnReceivedLongPollIntervalUpdate( | 238 virtual void OnReceivedLongPollIntervalUpdate( |
238 const base::TimeDelta& new_interval); | 239 const base::TimeDelta& new_interval); |
| 240 virtual void OnShouldStopSyncingPermanently(); |
239 | 241 |
240 void HandleServerConnectionEvent(const ServerConnectionEvent& event); | 242 void HandleServerConnectionEvent(const ServerConnectionEvent& event); |
241 | 243 |
242 void SyncMain(Syncer* syncer); | 244 void SyncMain(Syncer* syncer); |
243 | 245 |
244 // Calculates the next sync wait time and exponential backoff state. | 246 // Calculates the next sync wait time and exponential backoff state. |
245 // last_poll_wait is the time duration of the previous polling timeout which | 247 // last_poll_wait is the time duration of the previous polling timeout which |
246 // was used. user_idle_milliseconds is updated by this method, and is a report | 248 // was used. user_idle_milliseconds is updated by this method, and is a report |
247 // of the full amount of time since the last period of activity for the user. | 249 // of the full amount of time since the last period of activity for the user. |
248 // The continue_sync_cycle parameter is used to determine whether or not we | 250 // The continue_sync_cycle parameter is used to determine whether or not we |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 // or shutdown is started. | 283 // or shutdown is started. |
282 void PauseUntilResumedOrQuit(); | 284 void PauseUntilResumedOrQuit(); |
283 | 285 |
284 void EnterPausedState(); | 286 void EnterPausedState(); |
285 | 287 |
286 void ExitPausedState(); | 288 void ExitPausedState(); |
287 | 289 |
288 // For unit tests only. | 290 // For unit tests only. |
289 virtual void DisableIdleDetection() { disable_idle_detection_ = true; } | 291 virtual void DisableIdleDetection() { disable_idle_detection_ = true; } |
290 | 292 |
| 293 // This sets all conditions for syncer thread termination but does not |
| 294 // actually join threads. It is expected that Stop will be called at some |
| 295 // time after to fully stop and clean up. |
| 296 void RequestSyncerExitAndSetThreadStopConditions(); |
| 297 |
291 // State of the notification framework is tracked by these values. | 298 // State of the notification framework is tracked by these values. |
292 bool p2p_authenticated_; | 299 bool p2p_authenticated_; |
293 bool p2p_subscribed_; | 300 bool p2p_subscribed_; |
294 | 301 |
295 scoped_ptr<EventListenerHookup> conn_mgr_hookup_; | 302 scoped_ptr<EventListenerHookup> conn_mgr_hookup_; |
296 const AllStatus* allstatus_; | 303 const AllStatus* allstatus_; |
297 | 304 |
298 // Modifiable versions of kDefaultLongPollIntervalSeconds which can be | 305 // Modifiable versions of kDefaultLongPollIntervalSeconds which can be |
299 // updated by the server. | 306 // updated by the server. |
300 int syncer_short_poll_interval_seconds_; | 307 int syncer_short_poll_interval_seconds_; |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 | 346 |
340 // Useful for unit tests | 347 // Useful for unit tests |
341 bool disable_idle_detection_; | 348 bool disable_idle_detection_; |
342 | 349 |
343 DISALLOW_COPY_AND_ASSIGN(SyncerThread); | 350 DISALLOW_COPY_AND_ASSIGN(SyncerThread); |
344 }; | 351 }; |
345 | 352 |
346 } // namespace browser_sync | 353 } // namespace browser_sync |
347 | 354 |
348 #endif // CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_ | 355 #endif // CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_ |
OLD | NEW |