package vault12import (3"time"4)56// ticker is a wrapper around time.Ticker which allows the tick time to be 0.7// ticker is not goroutine safe; do not call Chan at the same time as Reset.8type ticker struct {9ch <-chan time.Time1011inner *time.Ticker12}1314func newTicker(d time.Duration) *ticker {15var t ticker16t.Reset(d)1718return &t19}2021func (t *ticker) Chan() <-chan time.Time { return t.ch }2223func (t *ticker) Reset(d time.Duration) {24if d == 0 {25t.Stop()26return27}2829if t.inner == nil {30t.inner = time.NewTicker(d)31t.ch = t.inner.C32} else {33t.inner.Reset(d)34}35}3637func (t *ticker) Stop() {38if t.inner != nil {39t.inner.Stop()40t.inner = nil41}42}434445