package odrvcookie import ( "time" ) // CookieRenew holds information for the renew type CookieRenew struct { timer *time.Ticker renewFn func() } // NewRenew returns and starts a CookieRenew func NewRenew(interval time.Duration, renewFn func()) *CookieRenew { renew := CookieRenew{ timer: time.NewTicker(interval), renewFn: renewFn, } go renew.Renew() return &renew } // Renew calls the renewFn for every tick func (c *CookieRenew) Renew() { for { <-c.timer.C // wait for tick c.renewFn() } }