gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

timer.go (750B)


      1 package backoff
      2 
      3 import "time"
      4 
      5 type Timer interface {
      6 	Start(duration time.Duration)
      7 	Stop()
      8 	C() <-chan time.Time
      9 }
     10 
     11 // defaultTimer implements Timer interface using time.Timer
     12 type defaultTimer struct {
     13 	timer *time.Timer
     14 }
     15 
     16 // C returns the timers channel which receives the current time when the timer fires.
     17 func (t *defaultTimer) C() <-chan time.Time {
     18 	return t.timer.C
     19 }
     20 
     21 // Start starts the timer to fire after the given duration
     22 func (t *defaultTimer) Start(duration time.Duration) {
     23 	if t.timer == nil {
     24 		t.timer = time.NewTimer(duration)
     25 	} else {
     26 		t.timer.Reset(duration)
     27 	}
     28 }
     29 
     30 // Stop is called when the timer is not used anymore and resources may be freed.
     31 func (t *defaultTimer) Stop() {
     32 	if t.timer != nil {
     33 		t.timer.Stop()
     34 	}
     35 }