]> Sergey Matveev's repositories - btrtrc.git/blob - storage/map-piece-completion.go
Fix sqlite piece completion
[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         m sync.Map
11 }
12
13 var _ PieceCompletion = (*mapPieceCompletion)(nil)
14
15 func NewMapPieceCompletion() PieceCompletion {
16         return &mapPieceCompletion{}
17 }
18
19 func (*mapPieceCompletion) Close() error { return nil }
20
21 func (me *mapPieceCompletion) Get(pk metainfo.PieceKey) (c Completion, err error) {
22         v, ok := me.m.Load(pk)
23         if ok {
24                 c.Complete = v.(bool)
25         }
26         c.Ok = ok
27         return
28 }
29
30 func (me *mapPieceCompletion) Set(pk metainfo.PieceKey, b bool) error {
31         me.m.Store(pk, b)
32         return nil
33 }