// Copyright 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/time.h"
#include "sync/base/sync_export.h"

namespace syncer {

namespace sessions {
struct ModelNeutralState;
}

// A component used to get time delays associated with exponential backoff.
class SYNC_EXPORT_PRIVATE 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_
