]> Sergey Matveev's repositories - btrtrc.git/blob - storage/map-piece-completion.go
Drop support for go 1.20
[btrtrc.git] / storage / map-piece-completion.go
1 package storage
2
3 import (
4         "sync"
5
6         "github.com/anacrolix/torrent/metainfo"
7 )
8
9 type mapPieceCompletion struct {
10         // TODO: Generics
11         m sync.Map
12 }
13
14 var _ PieceCompletion = (*mapPieceCompletion)(nil)
15
16 func NewMapPieceCompletion() PieceCompletion {
17         return &mapPieceCompletion{}
18 }
19
20 func (*mapPieceCompletion) Close() error { return nil }
21
22 func (me *mapPieceCompletion) Get(pk metainfo.PieceKey) (c Completion, err error) {
23         v, ok := me.m.Load(pk)
24         if ok {
25                 c.Complete = v.(bool)
26         }
27         c.Ok = ok
28         return
29 }
30
31 func (me *mapPieceCompletion) Set(pk metainfo.PieceKey, b bool) error {
32         me.m.Store(pk, b)
33         return nil
34 }