Index: sync/engine/backoff_delay_provider.cc |
diff --git a/sync/engine/backoff_delay_provider.cc b/sync/engine/backoff_delay_provider.cc |
deleted file mode 100644 |
index 864401cc9c9cb390d24cfbed446f97cacf5ed0e8..0000000000000000000000000000000000000000 |
--- a/sync/engine/backoff_delay_provider.cc |
+++ /dev/null |
@@ -1,109 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "sync/engine/backoff_delay_provider.h" |
- |
-#include <stdint.h> |
- |
-#include <algorithm> |
- |
-#include "base/rand_util.h" |
-#include "sync/internal_api/public/engine/polling_constants.h" |
-#include "sync/internal_api/public/sessions/model_neutral_state.h" |
-#include "sync/internal_api/public/util/syncer_error.h" |
- |
-using base::TimeDelta; |
- |
-namespace syncer { |
- |
-// static |
-BackoffDelayProvider* BackoffDelayProvider::FromDefaults() { |
- return new BackoffDelayProvider( |
- TimeDelta::FromSeconds(kInitialBackoffRetrySeconds), |
- TimeDelta::FromSeconds(kInitialBackoffImmediateRetrySeconds)); |
-} |
- |
-// static |
-BackoffDelayProvider* BackoffDelayProvider::WithShortInitialRetryOverride() { |
- return new BackoffDelayProvider( |
- TimeDelta::FromSeconds(kInitialBackoffShortRetrySeconds), |
- TimeDelta::FromSeconds(kInitialBackoffImmediateRetrySeconds)); |
-} |
- |
-BackoffDelayProvider::BackoffDelayProvider( |
- const base::TimeDelta& default_initial_backoff, |
- const base::TimeDelta& short_initial_backoff) |
- : default_initial_backoff_(default_initial_backoff), |
- short_initial_backoff_(short_initial_backoff) { |
-} |
- |
-BackoffDelayProvider::~BackoffDelayProvider() {} |
- |
-TimeDelta BackoffDelayProvider::GetDelay(const base::TimeDelta& last_delay) { |
- if (last_delay.InSeconds() >= kMaxBackoffSeconds) |
- return TimeDelta::FromSeconds(kMaxBackoffSeconds); |
- |
- // This calculates approx. base_delay_seconds * 2 +/- base_delay_seconds / 2 |
- int64_t backoff_s = |
- std::max(static_cast<int64_t>(1), |
- last_delay.InSeconds() * kBackoffRandomizationFactor); |
- |
- // Flip a coin to randomize backoff interval by +/- 50%. |
- int rand_sign = base::RandInt(0, 1) * 2 - 1; |
- |
- // Truncation is adequate for rounding here. |
- backoff_s = backoff_s + |
- (rand_sign * (last_delay.InSeconds() / kBackoffRandomizationFactor)); |
- |
- // Cap the backoff interval. |
- backoff_s = std::max(static_cast<int64_t>(1), |
- std::min(backoff_s, kMaxBackoffSeconds)); |
- |
- return TimeDelta::FromSeconds(backoff_s); |
-} |
- |
-TimeDelta BackoffDelayProvider::GetInitialDelay( |
- const sessions::ModelNeutralState& state) const { |
- // NETWORK_CONNECTION_UNAVAILABLE implies we did not receive HTTP response |
- // from server because of some network error. If network is unavailable then |
- // on next connection type or address change scheduler will run canary job. |
- // Otherwise we'll retry in 30 seconds. |
- if (state.commit_result == NETWORK_CONNECTION_UNAVAILABLE || |
- state.last_download_updates_result == NETWORK_CONNECTION_UNAVAILABLE) { |
- return default_initial_backoff_; |
- } |
- |
- if (SyncerErrorIsError(state.last_get_key_result)) |
- return default_initial_backoff_; |
- |
- // Note: If we received a MIGRATION_DONE on download updates, then commit |
- // should not have taken place. Moreover, if we receive a MIGRATION_DONE |
- // on commit, it means that download updates succeeded. Therefore, we only |
- // need to check if either code is equal to SERVER_RETURN_MIGRATION_DONE, |
- // and not if there were any more serious errors requiring the long retry. |
- if (state.last_download_updates_result == SERVER_RETURN_MIGRATION_DONE || |
- state.commit_result == SERVER_RETURN_MIGRATION_DONE) { |
- return short_initial_backoff_; |
- } |
- |
- // If a datatype decides the GetUpdates must be retried (e.g. because the |
- // context has been updated since the request), use the short delay. |
- if (state.last_download_updates_result == DATATYPE_TRIGGERED_RETRY) |
- return short_initial_backoff_; |
- |
- // When the server tells us we have a conflict, then we should download the |
- // latest updates so we can see the conflict ourselves, resolve it locally, |
- // then try again to commit. Running another sync cycle will do all these |
- // things. There's no need to back off, we can do this immediately. |
- // |
- // TODO(sync): We shouldn't need to handle this in BackoffDelayProvider. |
- // There should be a way to deal with protocol errors before we get to this |
- // point. |
- if (state.commit_result == SERVER_RETURN_CONFLICT) |
- return short_initial_backoff_; |
- |
- return default_initial_backoff_; |
-} |
- |
-} // namespace syncer |