mirror of
https://github.com/Velocidex/velociraptor.git
synced 2026-10-12 02:09:59 +00:00
* Updated error handling to use github.com/go-errors/errors * Added Timeout parameter in query() plugin
30 lines
422 B
Go
30 lines
422 B
Go
package utils
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
errors "github.com/go-errors/errors"
|
|
)
|
|
|
|
var (
|
|
timeoutError = errors.New("Timeout")
|
|
)
|
|
|
|
func Retry(ctx context.Context, cb func() error,
|
|
number int, sleep time.Duration) error {
|
|
var err error
|
|
for i := 0; i < number; i++ {
|
|
err = cb()
|
|
if err == nil {
|
|
return err
|
|
}
|
|
select {
|
|
case <-ctx.Done():
|
|
return timeoutError
|
|
case <-time.After(sleep):
|
|
}
|
|
}
|
|
return err
|
|
}
|