initial import

This commit is contained in:
kevin
2020-07-26 17:09:05 +08:00
commit 7e3a369a8f
647 changed files with 54754 additions and 0 deletions

43
core/fx/retry.go Normal file
View File

@@ -0,0 +1,43 @@
package fx
import "zero/core/errorx"
const defaultRetryTimes = 3
type (
RetryOption func(*retryOptions)
retryOptions struct {
times int
}
)
func DoWithRetries(fn func() error, opts ...RetryOption) error {
var options = newRetryOptions()
for _, opt := range opts {
opt(options)
}
var berr errorx.BatchError
for i := 0; i < options.times; i++ {
if err := fn(); err != nil {
berr.Add(err)
} else {
return nil
}
}
return berr.Err()
}
func WithRetries(times int) RetryOption {
return func(options *retryOptions) {
options.times = times
}
}
func newRetryOptions() *retryOptions {
return &retryOptions{
times: defaultRetryTimes,
}
}