7 "github.com/anacrolix/torrent/metainfo"
10 type fileStoragePiece struct {
17 func (me *fileStoragePiece) pieceKey() metainfo.PieceKey {
18 return metainfo.PieceKey{me.infoHash, me.p.Index()}
21 func (fs *fileStoragePiece) GetIsComplete() bool {
22 ret, err := fs.completion.Get(fs.pieceKey())
23 if err != nil || !ret {
26 // If it's allegedly complete, check that its constituent files have the
28 for _, fi := range extentCompleteRequiredLengths(fs.p.Info, fs.p.Offset(), fs.p.Length()) {
29 s, err := os.Stat(fs.fileInfoName(fi))
30 if err != nil || s.Size() < fi.Length {
38 // The completion was wrong, fix it.
39 fs.completion.Set(fs.pieceKey(), false)
43 func (fs *fileStoragePiece) MarkComplete() error {
44 fs.completion.Set(fs.pieceKey(), true)
48 func (fs *fileStoragePiece) MarkNotComplete() error {
49 fs.completion.Set(fs.pieceKey(), false)