diff options
Diffstat (limited to 'storage/storage.go')
| -rw-r--r-- | storage/storage.go | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/storage/storage.go b/storage/storage.go index 6dc4a37..06434e2 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -3,6 +3,7 @@ package storage import ( "crypto/rand" "errors" + "log" "math/big" "strings" ) @@ -55,3 +56,20 @@ func (s *Storage) Put(file File) (string, error) { return key, nil } + +func (s *Storage) GarbageCollect() { + log.Println("running garbage collection on stored files") + + deletedKeys := make([]string, 0) + + for key, file := range s.files { + if !file.IsAvailable() { + deletedKeys = append(deletedKeys, key) + } + } + + for _, key := range deletedKeys { + log.Println("cleaned up stale file:", key) + delete(s.files, key) + } +} |
