32 lines
516 B
Go
32 lines
516 B
Go
/*
|
|
Copyright IBM Corp. All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package blocksprovider
|
|
|
|
import "time"
|
|
|
|
//go:generate counterfeiter -o fake/sleeper.go --fake-name Sleeper . testSleeper
|
|
type customSleeper interface {
|
|
Sleep(time.Duration)
|
|
}
|
|
|
|
type sleeper struct {
|
|
sleep func(time.Duration)
|
|
}
|
|
|
|
func (s sleeper) Sleep(d time.Duration, doneC chan struct{}) {
|
|
if s.sleep == nil {
|
|
timer := time.NewTimer(d)
|
|
select {
|
|
case <-timer.C:
|
|
case <-doneC:
|
|
timer.Stop()
|
|
}
|
|
return
|
|
}
|
|
s.sleep(d)
|
|
}
|