]> Sergey Matveev's repositories - btrtrc.git/blob - undirtied-chunks-iter.go
Don't starve unverified bytes limit on unrequestable pieces
[btrtrc.git] / undirtied-chunks-iter.go
1 package torrent
2
3 import (
4         typedRoaring "github.com/anacrolix/torrent/typed-roaring"
5 )
6
7 func iterBitmapUnsetInRange[T typedRoaring.BitConstraint](
8         it *typedRoaring.Iterator[T],
9         start, end T,
10         f func(T),
11 ) {
12         it.AdvanceIfNeeded(start)
13         lastDirty := start - 1
14         for it.HasNext() {
15                 next := it.Next()
16                 if next >= end {
17                         break
18                 }
19                 for index := lastDirty + 1; index < next; index++ {
20                         f(index)
21                 }
22                 lastDirty = next
23         }
24         for index := lastDirty + 1; index < end; index++ {
25                 f(index)
26         }
27 }