Foundation.Retry.Handler (foundation v0.2.1)

Copy Markdown View Source

Retry handler state and delay calculations.

Summary

Types

t()

@type t() :: %Foundation.Retry.Handler{
  attempt: non_neg_integer(),
  base_delay_ms: non_neg_integer(),
  jitter_pct: float(),
  last_progress_at: integer() | nil,
  max_delay_ms: non_neg_integer(),
  max_retries: non_neg_integer() | :infinity,
  progress_timeout_ms: timeout() | nil,
  start_time: integer()
}

Functions

elapsed_ms(handler)

@spec elapsed_ms(t()) :: non_neg_integer()

from_config(config)

@spec from_config(struct()) :: t()

Build a Handler from a config struct that implements to_handler_opts/1.

increment_attempt(handler)

@spec increment_attempt(t()) :: t()

new(opts \\ [])

@spec new(keyword()) :: t()

next_delay(handler)

@spec next_delay(t()) :: non_neg_integer()

progress_timeout?(handler)

@spec progress_timeout?(t()) :: boolean()

record_progress(handler)

@spec record_progress(t()) :: t()

retry?(handler, error)

@spec retry?(t(), term()) :: boolean()