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

Unified Diff: sync/engine/backoff_delay_provider.h

Issue 10837231: sync: add InternalComponentsFactory::Switches to simplify passing switches to internal components. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: pass switches in test_profile_sync_service.cc Created 8 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: sync/engine/backoff_delay_provider.h
diff --git a/sync/engine/backoff_delay_provider.h b/sync/engine/backoff_delay_provider.h
new file mode 100644
index 0000000000000000000000000000000000000000..84293f978c0efc91906eb3bccc428a5bae268e62
--- /dev/null
+++ b/sync/engine/backoff_delay_provider.h
@@ -0,0 +1,55 @@
+// 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.
+
+#ifndef SYNC_ENGINE_BACKOFF_DELAY_PROVIDER_H_
+#define SYNC_ENGINE_BACKOFF_DELAY_PROVIDER_H_
+
+#include "base/time.h"
+
+namespace syncer {
+
+namespace sessions {
+struct ModelNeutralState;
+}
+
+// A component used to get time delays associated with exponential backoff.
+class BackoffDelayProvider {
+ public:
+ // Factory function to create a standard BackoffDelayProvider.
+ static BackoffDelayProvider* FromDefaults();
+
+ // Similar to above, but causes sync to retry very quickly (see
+ // polling_constants.h) when it encounters an error before exponential
+ // backoff.
+ //
+ // *** NOTE *** This should only be used if kSyncShortInitialRetryOverride
+ // was passed to command line.
+ static BackoffDelayProvider* WithShortInitialRetryOverride();
+
+ virtual ~BackoffDelayProvider();
+
+ // DDOS avoidance function. Calculates how long we should wait before trying
+ // again after a failed sync attempt, where the last delay was |base_delay|.
+ // TODO(tim): Look at URLRequestThrottlerEntryInterface.
+ virtual base::TimeDelta GetDelay(const base::TimeDelta& last_delay);
+
+ // Helper to calculate the initial value for exponential backoff.
+ // See possible values and comments in polling_constants.h.
+ virtual base::TimeDelta GetInitialDelay(
+ const sessions::ModelNeutralState& state) const;
+
+ protected:
+ BackoffDelayProvider(const base::TimeDelta& default_initial_backoff,
+ const base::TimeDelta& short_initial_backoff);
+
+ private:
+ const base::TimeDelta default_initial_backoff_;
+ const base::TimeDelta short_initial_backoff_;
+
+ DISALLOW_COPY_AND_ASSIGN(BackoffDelayProvider);
+};
+
+} // namespace syncer
+
+#endif // SYNC_ENGINE_BACKOFF_DELAY_PROVIDER_H_

Powered by Google App Engine
This is Rietveld 408576698