lib/conn_grpc/backoff.ex
      
      
        
        defmodule ConnGRPC.Backoff do
  @moduledoc "Behaviour for implementing custom backoff."
  @doc "Initializes the backoff state. This is called when the channel process is started."
  @callback new(opts :: any) :: state :: any
  @doc """
  Generate backoff delay and new state.
  This is called each time that we fail to connect.
  """
  @callback backoff(state :: any) :: {delay :: non_neg_integer, state :: any}
  @doc "Reset backoff state. This is called when connecting succeeds."
  @callback reset(state :: any) :: state :: any
end