]> Sergey Matveev's repositories - btrtrc.git/blob - storage/piece-completion.go
Drop support for go 1.20
[btrtrc.git] / storage / piece-completion.go
1 package storage
2
3 import (
4         "github.com/anacrolix/log"
5
6         "github.com/anacrolix/torrent/metainfo"
7 )
8
9 type PieceCompletionGetSetter interface {
10         Get(metainfo.PieceKey) (Completion, error)
11         Set(_ metainfo.PieceKey, complete bool) error
12 }
13
14 // Implementations track the completion of pieces. It must be concurrent-safe.
15 type PieceCompletion interface {
16         PieceCompletionGetSetter
17         Close() error
18 }
19
20 func pieceCompletionForDir(dir string) (ret PieceCompletion) {
21         ret, err := NewDefaultPieceCompletionForDir(dir)
22         if err != nil {
23                 log.Printf("couldn't open piece completion db in %q: %s", dir, err)
24                 ret = NewMapPieceCompletion()
25         }
26         return
27 }