status-go/protocol/tt/backoff.go

26 lines
544 B
Go
Raw Normal View History

package tt
import (
"time"
"github.com/cenkalti/backoff/v3"
)
2021-02-17 23:14:48 +00:00
type BackOffOption func(*backoff.ExponentialBackOff)
func RetryWithBackOff(o func() error, options ...BackOffOption) error {
b := backoff.ExponentialBackOff{
InitialInterval: time.Millisecond * 100,
RandomizationFactor: 0.1,
Multiplier: 1,
MaxInterval: time.Second,
MaxElapsedTime: time.Second * 10,
Clock: backoff.SystemClock,
}
2021-02-17 23:14:48 +00:00
for _, option := range options {
option(&b)
}
b.Reset()
return backoff.Retry(o, &b)
}