31 lines
449 B
Go
31 lines
449 B
Go
package triton
|
|
|
|
import (
|
|
"errors"
|
|
"time"
|
|
)
|
|
|
|
var (
|
|
// ErrTimeout is returned when waiting for state change
|
|
ErrTimeout = errors.New("timed out while waiting for resource change")
|
|
)
|
|
|
|
func waitFor(f func() (bool, error), every, timeout time.Duration) error {
|
|
start := time.Now()
|
|
|
|
for time.Since(start) <= timeout {
|
|
stop, err := f()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if stop {
|
|
return nil
|
|
}
|
|
|
|
time.Sleep(every)
|
|
}
|
|
|
|
return ErrTimeout
|
|
}
|