rclone/backend/webdav/odrvcookie/renew.go
2019-02-02 11:45:07 +00:00

30 lines
518 B
Go

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()
}
}