Documentation
¶
Overview ¶
Package backoff provides an exponential-backoff implementation.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Backoff ¶
type Backoff struct {
// Factor is the multiplying factor for each increment step.
//
// Defaults to 2.
Factor float64
// Jitter eases contention by randomizing backoff steps.
//
// Defaults to false.
Jitter bool
// Minimum value of the counter.
//
// Defaults to 100 milliseconds.
Min time.Duration
// Maximum value of the counter.
//
// Defaults to 10 seconds.
Max time.Duration
// contains filtered or unexported fields
}
Backoff is a time.Duration counter, starting at Min. After every call to the Duration method the current timing is multiplied by Factor, but it never exceeds Max.
Backoff is not generally concurrent-safe, but the ForAttempt method can be used concurrently.
func (*Backoff) Duration ¶
Duration returns the duration for the current attempt before incrementing the attempt counter. See ForAttempt.
func (*Backoff) ForAttempt ¶
ForAttempt returns the duration for a specific attempt. This is useful if you have a large number of independent Backoffs, but don't want use unnecessary memory storing the Backoff parameters per Backoff. The first attempt should be 0.
ForAttempt is concurrent-safe.