Files
decypharr/pkg/webdav/workers.go
2025-03-19 03:08:22 +01:00

70 lines
1.4 KiB
Go

package webdav
import "time"
func (c *Cache) Refresh() error {
// For now, we just want to refresh the listing and download links
c.logger.Info().Msg("Starting cache refresh workers")
go c.refreshListingWorker()
go c.refreshDownloadLinksWorker()
go c.refreshTorrentsWorker()
return nil
}
func (c *Cache) refreshListingWorker() {
refreshTicker := time.NewTicker(10 * time.Second)
defer refreshTicker.Stop()
for {
select {
case <-refreshTicker.C:
if c.listingRefreshMu.TryLock() {
func() {
defer c.listingRefreshMu.Unlock()
c.refreshListings()
}()
} else {
c.logger.Debug().Msg("Refresh already in progress")
}
}
}
}
func (c *Cache) refreshDownloadLinksWorker() {
refreshTicker := time.NewTicker(40 * time.Minute)
defer refreshTicker.Stop()
for {
select {
case <-refreshTicker.C:
if c.downloadLinksRefreshMu.TryLock() {
func() {
defer c.downloadLinksRefreshMu.Unlock()
c.refreshDownloadLinks()
}()
} else {
c.logger.Debug().Msg("Refresh already in progress")
}
}
}
}
func (c *Cache) refreshTorrentsWorker() {
refreshTicker := time.NewTicker(5 * time.Second)
defer refreshTicker.Stop()
for {
select {
case <-refreshTicker.C:
if c.listingRefreshMu.TryLock() {
func() {
defer c.listingRefreshMu.Unlock()
c.refreshTorrents()
}()
} else {
c.logger.Debug().Msg("Refresh already in progress")
}
}
}
}