1
0
Fork 0
rss2twitter/vendor/github.com/azr/backoff/backoff.go
2018-12-05 00:15:53 -06:00

51 Zeilen
1,2 KiB
Go

//Package backoff helps you at backing off !
//
//It was forked from github.com/cenkalti/backoff which is awesome.
//
//This BackOff sleeps upon BackOff() and calculates its next backoff time instead of returning the duration to sleep.
package backoff
import "time"
// Interface interface to use after a retryable operation failed.
// A Interface.BackOff sleeps.
type Interface interface {
// Example usage:
//
// for ;; {
// err, canRetry := somethingThatCanFail()
// if err != nil && canRetry {
// backoffer.Backoff()
// }
// }
BackOff()
// Reset to initial state.
Reset()
}
// ZeroBackOff is a fixed back-off policy whose back-off time is always zero,
// meaning that the operation is retried immediately without waiting.
type ZeroBackOff struct{}
var _ Interface = (*ZeroBackOff)(nil)
func (b *ZeroBackOff) Reset() {}
func (b *ZeroBackOff) BackOff() {}
type ConstantBackOff struct {
Interval time.Duration
}
var _ Interface = (*ConstantBackOff)(nil)
func (b *ConstantBackOff) Reset() {}
func (b *ConstantBackOff) BackOff() {
time.Sleep(b.Interval)
}
func NewConstant(d time.Duration) *ConstantBackOff {
return &ConstantBackOff{Interval: d}
}