mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			35 lines
		
	
	
		
			473 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			473 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package utils
 | 
						|
 | 
						|
import "time"
 | 
						|
 | 
						|
type Ticker struct {
 | 
						|
	raw    *time.Ticker
 | 
						|
	isDone bool
 | 
						|
	done   chan bool
 | 
						|
}
 | 
						|
 | 
						|
func NewTicker(duration time.Duration) *Ticker {
 | 
						|
	return &Ticker{
 | 
						|
		raw:  time.NewTicker(duration),
 | 
						|
		done: make(chan bool),
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (this *Ticker) Wait() bool {
 | 
						|
	select {
 | 
						|
	case <-this.raw.C:
 | 
						|
		return true
 | 
						|
	case <-this.done:
 | 
						|
		this.isDone = true
 | 
						|
		return false
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (this *Ticker) Stop() {
 | 
						|
	if this.isDone {
 | 
						|
		return
 | 
						|
	}
 | 
						|
	this.done <- true
 | 
						|
	this.raw.Stop()
 | 
						|
}
 |