github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/store/sleep.go (about) 1 package store 2 3 import ( 4 "context" 5 "time" 6 ) 7 8 type Sleeper interface { 9 // A cancelable Sleep(). Exits immediately if the context is canceled. 10 Sleep(ctx context.Context, d time.Duration) 11 } 12 13 type sleeper struct{} 14 15 func (s sleeper) Sleep(ctx context.Context, d time.Duration) { 16 t := time.NewTimer(d) 17 defer t.Stop() 18 select { 19 case <-t.C: 20 case <-ctx.Done(): 21 } 22 } 23 24 func DefaultSleeper() Sleeper { 25 return sleeper{} 26 }