Class: Philiprehberger::WebhookBuilder::Backoff::Exponential
- Inherits:
-
Object
- Object
- Philiprehberger::WebhookBuilder::Backoff::Exponential
- Defined in:
- lib/philiprehberger/webhook_builder/backoff.rb
Overview
Exponential backoff: base * 2^attempt, capped at max_delay.
Instance Method Summary collapse
-
#call(attempt) ⇒ Float
Delay in seconds.
-
#initialize(base: 1, max_delay: 30, jitter: false) ⇒ Exponential
constructor
A new instance of Exponential.
Constructor Details
#initialize(base: 1, max_delay: 30, jitter: false) ⇒ Exponential
Returns a new instance of Exponential.
11 12 13 14 15 |
# File 'lib/philiprehberger/webhook_builder/backoff.rb', line 11 def initialize(base: 1, max_delay: 30, jitter: false) @base = base @max_delay = max_delay @jitter = jitter end |
Instance Method Details
#call(attempt) ⇒ Float
Returns delay in seconds.
19 20 21 22 23 |
# File 'lib/philiprehberger/webhook_builder/backoff.rb', line 19 def call(attempt) delay = [@base * (2**(attempt - 1)), @max_delay].min.to_f delay *= rand if @jitter delay end |