]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Move undirtiedChunksIter into its own file
authorMatt Joiner <anacrolix@gmail.com>
Mon, 9 May 2022 02:51:01 +0000 (12:51 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Mon, 9 May 2022 02:51:01 +0000 (12:51 +1000)
piece.go
undirtied-chunks-iter.go [new file with mode: 0644]

index 44f2dd9d623410844a2769f952130aa1886e3163..d892a406e809843af1eee379f28c5171724e2e25 100644 (file)
--- a/piece.go
+++ b/piece.go
@@ -10,7 +10,6 @@ import (
        "github.com/anacrolix/torrent/metainfo"
        pp "github.com/anacrolix/torrent/peer_protocol"
        "github.com/anacrolix/torrent/storage"
-       "github.com/anacrolix/torrent/typed-roaring"
 )
 
 type Piece struct {
@@ -249,35 +248,6 @@ func init() {
        gob.Register(undirtiedChunksIter{})
 }
 
-// Use an iterator to jump between dirty bits.
-type undirtiedChunksIter struct {
-       TorrentDirtyChunks *typedRoaring.Bitmap[RequestIndex]
-       StartRequestIndex  RequestIndex
-       EndRequestIndex    RequestIndex
-}
-
-func (me *undirtiedChunksIter) Iter(f func(chunkIndexType)) {
-       it := me.TorrentDirtyChunks.Iterator()
-       startIndex := me.StartRequestIndex
-       endIndex := me.EndRequestIndex
-       it.AdvanceIfNeeded(startIndex)
-       lastDirty := startIndex - 1
-       for it.HasNext() {
-               next := it.Next()
-               if next >= endIndex {
-                       break
-               }
-               for index := lastDirty + 1; index < next; index++ {
-                       f(index - startIndex)
-               }
-               lastDirty = next
-       }
-       for index := lastDirty + 1; index < endIndex; index++ {
-               f(index - startIndex)
-       }
-       return
-}
-
 func (p *Piece) requestIndexOffset() RequestIndex {
        return p.t.pieceRequestIndexOffset(p.index)
 }
diff --git a/undirtied-chunks-iter.go b/undirtied-chunks-iter.go
new file mode 100644 (file)
index 0000000..14f88a2
--- /dev/null
@@ -0,0 +1,34 @@
+package torrent
+
+import (
+       "github.com/anacrolix/torrent/typed-roaring"
+)
+
+// Use an iterator to jump between dirty bits.
+type undirtiedChunksIter struct {
+       TorrentDirtyChunks *typedRoaring.Bitmap[RequestIndex]
+       StartRequestIndex  RequestIndex
+       EndRequestIndex    RequestIndex
+}
+
+func (me *undirtiedChunksIter) Iter(f func(chunkIndexType)) {
+       it := me.TorrentDirtyChunks.Iterator()
+       startIndex := me.StartRequestIndex
+       endIndex := me.EndRequestIndex
+       it.AdvanceIfNeeded(startIndex)
+       lastDirty := startIndex - 1
+       for it.HasNext() {
+               next := it.Next()
+               if next >= endIndex {
+                       break
+               }
+               for index := lastDirty + 1; index < next; index++ {
+                       f(index - startIndex)
+               }
+               lastDirty = next
+       }
+       for index := lastDirty + 1; index < endIndex; index++ {
+               f(index - startIndex)
+       }
+       return
+}