Some checks failed
PR Check / check-and-test (pull_request) Failing after 2m11s
- Added Prometheus client library for metrics collection. - Refactored garbage collection strategy from random deletion to LRU (Least Recently Used) deletion. - Introduced per-key locking in cache to prevent race conditions. - Enhanced logging with structured log messages for cache hits and misses. - Implemented a retry mechanism for upstream requests with exponential backoff. - Updated Go modules and indirect dependencies for better compatibility and performance. - Removed unused sync filesystem implementation. - Added version initialization to ensure a default version string.
77 lines
1.6 KiB
Go
77 lines
1.6 KiB
Go
package sync
|
|
|
|
// import (
|
|
// "fmt"
|
|
// "s1d3sw1ped/SteamCache2/vfs"
|
|
// "sync"
|
|
// )
|
|
|
|
// // Ensure SyncFS implements VFS.
|
|
// var _ vfs.VFS = (*SyncFS)(nil)
|
|
|
|
// type SyncFS struct {
|
|
// vfs vfs.VFS
|
|
// mu sync.RWMutex
|
|
// }
|
|
|
|
// func New(vfs vfs.VFS) *SyncFS {
|
|
// return &SyncFS{
|
|
// vfs: vfs,
|
|
// mu: sync.RWMutex{},
|
|
// }
|
|
// }
|
|
|
|
// // Name returns the name of the file system.
|
|
// func (sfs *SyncFS) Name() string {
|
|
// return fmt.Sprintf("SyncFS(%s)", sfs.vfs.Name())
|
|
// }
|
|
|
|
// // Size returns the total size of all files in the file system.
|
|
// func (sfs *SyncFS) Size() int64 {
|
|
// sfs.mu.RLock()
|
|
// defer sfs.mu.RUnlock()
|
|
|
|
// return sfs.vfs.Size()
|
|
// }
|
|
|
|
// // Set sets the value of key as src.
|
|
// // Setting the same key multiple times, the last set call takes effect.
|
|
// func (sfs *SyncFS) Set(key string, src []byte) error {
|
|
// sfs.mu.Lock()
|
|
// defer sfs.mu.Unlock()
|
|
|
|
// return sfs.vfs.Set(key, src)
|
|
// }
|
|
|
|
// // Delete deletes the value of key.
|
|
// func (sfs *SyncFS) Delete(key string) error {
|
|
// sfs.mu.Lock()
|
|
// defer sfs.mu.Unlock()
|
|
|
|
// return sfs.vfs.Delete(key)
|
|
// }
|
|
|
|
// // Get gets the value of key to dst, and returns dst no matter whether or not there is an error.
|
|
// func (sfs *SyncFS) Get(key string) ([]byte, error) {
|
|
// sfs.mu.RLock()
|
|
// defer sfs.mu.RUnlock()
|
|
|
|
// return sfs.vfs.Get(key)
|
|
// }
|
|
|
|
// // Stat returns the FileInfo of key.
|
|
// func (sfs *SyncFS) Stat(key string) (*vfs.FileInfo, error) {
|
|
// sfs.mu.RLock()
|
|
// defer sfs.mu.RUnlock()
|
|
|
|
// return sfs.vfs.Stat(key)
|
|
// }
|
|
|
|
// // StatAll returns the FileInfo of all keys.
|
|
// func (sfs *SyncFS) StatAll() []*vfs.FileInfo {
|
|
// sfs.mu.RLock()
|
|
// defer sfs.mu.RUnlock()
|
|
|
|
// return sfs.vfs.StatAll()
|
|
// }
|