package fs import ( "os" "time" ) // AutoExpiryThread - auto expiry thread func (fs Filesystem) AutoExpiryThread(expiry time.Duration) { expireFiles := func(fp string, fl os.FileInfo, err error) error { if fp == fs.path { return nil } if fl.Mode().IsRegular() || fl.Mode()&os.ModeSymlink == os.ModeSymlink { if time.Now().Sub(fl.ModTime()) > expiry { if err := os.Remove(fp); err != nil { if os.IsNotExist(err) { return nil } return err } } return ErrDirNotEmpty } return nil } ticker := time.NewTicker(3 * time.Hour) for { select { // TODO - add a way to stop the timer thread case <-ticker.C: err := WalkUnsorted(fs.path, expireFiles) if err != nil { if !os.IsNotExist(err) && err != ErrDirNotEmpty { ticker.Stop() return } } } } }