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  }