| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 CHROME_BROWSER_SYNC_ENGINE_SYNC_SCHEDULER_H_ | 6 #ifndef CHROME_BROWSER_SYNC_ENGINE_SYNC_SCHEDULER_H_ |
| 7 #define CHROME_BROWSER_SYNC_ENGINE_SYNC_SCHEDULER_H_ | 7 #define CHROME_BROWSER_SYNC_ENGINE_SYNC_SCHEDULER_H_ |
| 8 #pragma once | 8 #pragma once |
| 9 | 9 |
| 10 #include <string> | 10 #include <string> |
| 11 | 11 |
| 12 #include "base/callback.h" | 12 #include "base/callback.h" |
| 13 #include "base/compiler_specific.h" |
| 13 #include "base/gtest_prod_util.h" | 14 #include "base/gtest_prod_util.h" |
| 14 #include "base/memory/linked_ptr.h" | 15 #include "base/memory/linked_ptr.h" |
| 15 #include "base/memory/scoped_ptr.h" | 16 #include "base/memory/scoped_ptr.h" |
| 16 #include "base/observer_list.h" | 17 #include "base/observer_list.h" |
| 17 #include "base/task.h" | 18 #include "base/task.h" |
| 18 #include "base/time.h" | 19 #include "base/time.h" |
| 19 #include "base/timer.h" | 20 #include "base/timer.h" |
| 20 #include "chrome/browser/sync/engine/configure_reason.h" | 21 #include "chrome/browser/sync/engine/configure_reason.h" |
| 21 #include "chrome/browser/sync/engine/nudge_source.h" | 22 #include "chrome/browser/sync/engine/nudge_source.h" |
| 22 #include "chrome/browser/sync/engine/polling_constants.h" | 23 #include "chrome/browser/sync/engine/polling_constants.h" |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 const syncable::ModelTypePayloadMap& types_with_payloads, | 92 const syncable::ModelTypePayloadMap& types_with_payloads, |
| 92 const tracked_objects::Location& nudge_location); | 93 const tracked_objects::Location& nudge_location); |
| 93 void ScheduleConfig(const syncable::ModelTypeBitSet& types, | 94 void ScheduleConfig(const syncable::ModelTypeBitSet& types, |
| 94 sync_api::ConfigureReason reason); | 95 sync_api::ConfigureReason reason); |
| 95 void ScheduleClearUserData(); | 96 void ScheduleClearUserData(); |
| 96 void ScheduleCleanupDisabledTypes(); | 97 void ScheduleCleanupDisabledTypes(); |
| 97 | 98 |
| 98 // Change status of notifications in the SyncSessionContext. | 99 // Change status of notifications in the SyncSessionContext. |
| 99 void set_notifications_enabled(bool notifications_enabled); | 100 void set_notifications_enabled(bool notifications_enabled); |
| 100 | 101 |
| 102 base::TimeDelta GetSessionsCommitDelay() const; |
| 103 |
| 101 // DDOS avoidance function. Calculates how long we should wait before trying | 104 // DDOS avoidance function. Calculates how long we should wait before trying |
| 102 // again after a failed sync attempt, where the last delay was |base_delay|. | 105 // again after a failed sync attempt, where the last delay was |base_delay|. |
| 103 // TODO(tim): Look at URLRequestThrottlerEntryInterface. | 106 // TODO(tim): Look at URLRequestThrottlerEntryInterface. |
| 104 static base::TimeDelta GetRecommendedDelay(const base::TimeDelta& base_delay); | 107 static base::TimeDelta GetRecommendedDelay(const base::TimeDelta& base_delay); |
| 105 | 108 |
| 106 // SyncSession::Delegate implementation. | 109 // SyncSession::Delegate implementation. |
| 107 virtual void OnSilencedUntil(const base::TimeTicks& silenced_until); | 110 virtual void OnSilencedUntil( |
| 108 virtual bool IsSyncingCurrentlySilenced(); | 111 const base::TimeTicks& silenced_until) OVERRIDE; |
| 112 virtual bool IsSyncingCurrentlySilenced() OVERRIDE; |
| 109 virtual void OnReceivedShortPollIntervalUpdate( | 113 virtual void OnReceivedShortPollIntervalUpdate( |
| 110 const base::TimeDelta& new_interval); | 114 const base::TimeDelta& new_interval) OVERRIDE; |
| 111 virtual void OnReceivedLongPollIntervalUpdate( | 115 virtual void OnReceivedLongPollIntervalUpdate( |
| 112 const base::TimeDelta& new_interval); | 116 const base::TimeDelta& new_interval) OVERRIDE; |
| 113 virtual void OnShouldStopSyncingPermanently(); | 117 virtual void OnReceivedSessionsCommitDelay( |
| 118 const base::TimeDelta& new_delay) OVERRIDE; |
| 119 virtual void OnShouldStopSyncingPermanently() OVERRIDE; |
| 114 | 120 |
| 115 // ServerConnectionEventListener implementation. | 121 // ServerConnectionEventListener implementation. |
| 116 // TODO(tim): schedule a nudge when valid connection detected? in 1 minute? | 122 // TODO(tim): schedule a nudge when valid connection detected? in 1 minute? |
| 117 virtual void OnServerConnectionEvent(const ServerConnectionEvent& event); | 123 virtual void OnServerConnectionEvent( |
| 124 const ServerConnectionEvent& event) OVERRIDE; |
| 118 | 125 |
| 119 private: | 126 private: |
| 120 enum JobProcessDecision { | 127 enum JobProcessDecision { |
| 121 // Indicates we should continue with the current job. | 128 // Indicates we should continue with the current job. |
| 122 CONTINUE, | 129 CONTINUE, |
| 123 // Indicates that we should save it to be processed later. | 130 // Indicates that we should save it to be processed later. |
| 124 SAVE, | 131 SAVE, |
| 125 // Indicates we should drop this job. | 132 // Indicates we should drop this job. |
| 126 DROP, | 133 DROP, |
| 127 }; | 134 }; |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 352 MessageLoop* const sync_loop_; | 359 MessageLoop* const sync_loop_; |
| 353 | 360 |
| 354 // Set in Start(), unset in Stop(). | 361 // Set in Start(), unset in Stop(). |
| 355 bool started_; | 362 bool started_; |
| 356 | 363 |
| 357 // Modifiable versions of kDefaultLongPollIntervalSeconds which can be | 364 // Modifiable versions of kDefaultLongPollIntervalSeconds which can be |
| 358 // updated by the server. | 365 // updated by the server. |
| 359 base::TimeDelta syncer_short_poll_interval_seconds_; | 366 base::TimeDelta syncer_short_poll_interval_seconds_; |
| 360 base::TimeDelta syncer_long_poll_interval_seconds_; | 367 base::TimeDelta syncer_long_poll_interval_seconds_; |
| 361 | 368 |
| 369 // Server-tweakable sessions commit delay. |
| 370 base::TimeDelta sessions_commit_delay_; |
| 371 |
| 362 // Periodic timer for polling. See AdjustPolling. | 372 // Periodic timer for polling. See AdjustPolling. |
| 363 base::RepeatingTimer<SyncScheduler> poll_timer_; | 373 base::RepeatingTimer<SyncScheduler> poll_timer_; |
| 364 | 374 |
| 365 // The mode of operation. | 375 // The mode of operation. |
| 366 Mode mode_; | 376 Mode mode_; |
| 367 | 377 |
| 368 // TODO(tim): Bug 26339. This needs to track more than just time I think, | 378 // TODO(tim): Bug 26339. This needs to track more than just time I think, |
| 369 // since the nudges could be for different types. Current impl doesn't care. | 379 // since the nudges could be for different types. Current impl doesn't care. |
| 370 base::TimeTicks last_sync_session_end_time_; | 380 base::TimeTicks last_sync_session_end_time_; |
| 371 | 381 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 384 scoped_ptr<Syncer> syncer_; | 394 scoped_ptr<Syncer> syncer_; |
| 385 | 395 |
| 386 scoped_ptr<sessions::SyncSessionContext> session_context_; | 396 scoped_ptr<sessions::SyncSessionContext> session_context_; |
| 387 | 397 |
| 388 DISALLOW_COPY_AND_ASSIGN(SyncScheduler); | 398 DISALLOW_COPY_AND_ASSIGN(SyncScheduler); |
| 389 }; | 399 }; |
| 390 | 400 |
| 391 } // namespace browser_sync | 401 } // namespace browser_sync |
| 392 | 402 |
| 393 #endif // CHROME_BROWSER_SYNC_ENGINE_SYNC_SCHEDULER_H_ | 403 #endif // CHROME_BROWSER_SYNC_ENGINE_SYNC_SCHEDULER_H_ |
| OLD | NEW |