github.com/paketo-buildpacks/packit@v1.3.2-0.20211206231111-86b75c657449/chronos/clock.go (about)

     1  package chronos
     2  
     3  import "time"
     4  
     5  var DefaultClock = NewClock(time.Now)
     6  
     7  type Clock struct {
     8  	now func() time.Time
     9  }
    10  
    11  func NewClock(now func() time.Time) Clock {
    12  	return Clock{now: now}
    13  }
    14  
    15  func (c Clock) Now() time.Time {
    16  	return c.now()
    17  }
    18  
    19  func (c Clock) Measure(f func() error) (time.Duration, error) {
    20  	then := c.Now()
    21  	err := f()
    22  	return c.Now().Sub(then), err
    23  }