7 "github.com/anacrolix/torrent/metainfo"
8 "github.com/anacrolix/torrent/storage"
11 type BFPieceCompletion struct {
15 func NewBFPieceCompletion() *BFPieceCompletion {
16 return &BFPieceCompletion{}
19 func (self *BFPieceCompletion) Get(pk metainfo.PieceKey) (c storage.Completion, rerr error) {
22 fd, err := os.OpenFile(pk.InfoHash.HexString()+".bf", os.O_RDWR|os.O_CREATE, 0666)
29 _, err = fd.ReadAt(b, int64(pk.Index))
45 func (self *BFPieceCompletion) Set(pk metainfo.PieceKey, complete bool) error {
46 if c, err := self.Get(pk); err == nil && c.Ok && c.Complete == complete {
51 fd, err := os.OpenFile(pk.InfoHash.HexString()+".bf", os.O_RDWR|os.O_CREATE, 0666)
60 if _, err = fd.WriteAt(b, int64(pk.Index)); err != nil {
66 func (self *BFPieceCompletion) Close() error {