github.com/artpar/rclone@v1.67.3/backend/webdav/odrvcookie/renew.go (about) 1 package odrvcookie 2 3 import ( 4 "time" 5 ) 6 7 // CookieRenew holds information for the renew 8 type CookieRenew struct { 9 timer *time.Ticker 10 renewFn func() 11 } 12 13 // NewRenew returns and starts a CookieRenew 14 func NewRenew(interval time.Duration, renewFn func()) *CookieRenew { 15 renew := CookieRenew{ 16 timer: time.NewTicker(interval), 17 renewFn: renewFn, 18 } 19 go renew.Renew() 20 return &renew 21 } 22 23 // Renew calls the renewFn for every tick 24 func (c *CookieRenew) Renew() { 25 for { 26 <-c.timer.C // wait for tick 27 c.renewFn() 28 } 29 }