Sha256: a3ef1a62f4eb423a1f6425b0f9db09b0037340af460ff14016d08c7b05e59ff9

Contents?: true

Size: 516 Bytes

Versions: 38

Compression:

Stored size: 516 Bytes

Contents

# frozen_string_literal: true

module Prefab
  # This class implements exponential backoff with a maximum delay.
  #
  # This is the default sync interval for aggregators.
  class ExponentialBackoff
    def initialize(max_delay:, initial_delay: 2, multiplier: 2)
      @initial_delay = initial_delay
      @max_delay = max_delay
      @multiplier = multiplier
      @delay = initial_delay
    end

    def call
      delay = @delay
      @delay = [@delay * @multiplier, @max_delay].min
      delay
    end
  end
end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
prefab-cloud-ruby-1.8.8 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.8.8.pre.1 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.8.7 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.8.6 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.8.5 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.8.4 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.8.3 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.8.2 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.8.1 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.8.0 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.7.2 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.7.1 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.7.0 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.6.2 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.6.1 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.6.0 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.5.1 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.6.0.pre2 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-1.6.0.pre1 lib/prefab/exponential_backoff.rb
prefab-cloud-ruby-0 lib/prefab/exponential_backoff.rb