mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 01:53:42 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			36 lines
		
	
	
		
			750 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			750 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package backoff
 | 
						|
 | 
						|
import "time"
 | 
						|
 | 
						|
type Timer interface {
 | 
						|
	Start(duration time.Duration)
 | 
						|
	Stop()
 | 
						|
	C() <-chan time.Time
 | 
						|
}
 | 
						|
 | 
						|
// defaultTimer implements Timer interface using time.Timer
 | 
						|
type defaultTimer struct {
 | 
						|
	timer *time.Timer
 | 
						|
}
 | 
						|
 | 
						|
// C returns the timers channel which receives the current time when the timer fires.
 | 
						|
func (t *defaultTimer) C() <-chan time.Time {
 | 
						|
	return t.timer.C
 | 
						|
}
 | 
						|
 | 
						|
// Start starts the timer to fire after the given duration
 | 
						|
func (t *defaultTimer) Start(duration time.Duration) {
 | 
						|
	if t.timer == nil {
 | 
						|
		t.timer = time.NewTimer(duration)
 | 
						|
	} else {
 | 
						|
		t.timer.Reset(duration)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// Stop is called when the timer is not used anymore and resources may be freed.
 | 
						|
func (t *defaultTimer) Stop() {
 | 
						|
	if t.timer != nil {
 | 
						|
		t.timer.Stop()
 | 
						|
	}
 | 
						|
}
 |