Files
cunicu/pkg/backoff/backoff.go
Steffen Vogel 3bee839348 fix: Update copyright years
Signed-off-by: Steffen Vogel <post@steffenvogel.de>
2025-01-01 22:45:39 +01:00

32 lines
568 B
Go

// SPDX-FileCopyrightText: 2025 Steffen Vogel <post@steffenvogel.de>
// SPDX-License-Identifier: Apache-2.0
package backoff
import (
"iter"
"time"
)
// stop indicates that no more retries should be made for use in NextBackOff().
const stop time.Duration = -1
func Retry(b *ExponentialBackOff) iter.Seq2[int, time.Duration] {
return func(yield func(int, time.Duration) bool) {
b.Reset()
for i := 0; ; i++ {
if !yield(i, b.GetElapsedTime()) {
break
}
next := b.NextBackOff()
if next == stop {
break
}
b.Clock.Sleep(next)
}
}
}