Class: Prefab::ExponentialBackoff

Inherits:
Object
  • Object
show all
Defined in:
lib/prefab/exponential_backoff.rb

Overview

This class implements exponential backoff with a maximum delay.

This is the default sync interval for aggregators.

Instance Method Summary collapse

Constructor Details

#initialize(max_delay:, initial_delay: 2, multiplier: 2) ⇒ ExponentialBackoff

Returns a new instance of ExponentialBackoff.



8
9
10
11
12
13
# File 'lib/prefab/exponential_backoff.rb', line 8

def initialize(max_delay:, initial_delay: 2, multiplier: 2)
  @initial_delay = initial_delay
  @max_delay = max_delay
  @multiplier = multiplier
  @delay = initial_delay
end

Instance Method Details

#callObject



15
16
17
18
19
# File 'lib/prefab/exponential_backoff.rb', line 15

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