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  }