go_study/fabric-main/internal/pkg/peer/blocksprovider/stoppable_sleeper.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)
}