Atomic per-run admission ledger.
The ledger tracks logical measure work, expansion work, token usage and live
population. Limits may be integers or :infinity.
Summary
Functions
Record already-consumed work without admission checking (for observed token usage).
Types
@type limits() :: %{optional(meter()) => non_neg_integer() | :infinity}
@type meter() :: :measure | :expand | :tokens | :population
@type t() :: %{atomics: :atomics.atomics_ref(), limits: limits()}
Functions
@spec consume(t(), meter(), non_neg_integer()) :: :ok
Record already-consumed work without admission checking (for observed token usage).
@spec refund(t(), meter(), non_neg_integer()) :: :ok
@spec remaining(t(), meter()) :: non_neg_integer() | :infinity
@spec reserve(t(), meter(), non_neg_integer()) :: :ok | {:error, :budget_exhausted}
@spec transfer(t(), meter(), non_neg_integer(), (-> term())) :: {:ok, term()} | {:error, :budget_exhausted}
@spec used(t(), meter()) :: non_neg_integer()