1 package request_strategy
7 "github.com/RoaringBitmap/roaring"
8 qt "github.com/frankban/quicktest"
9 "github.com/google/go-cmp/cmp"
13 gob.Register(chunkIterRange(0))
14 gob.Register(sliceChunksIter{})
17 type chunkIterRange ChunkIndex
19 func (me chunkIterRange) Iter(f func(ChunkIndex)) {
20 for offset := ChunkIndex(0); offset < ChunkIndex(me); offset += 1 {
25 type sliceChunksIter []ChunkIndex
27 func chunkIter(offsets ...ChunkIndex) ChunksIter {
28 return sliceChunksIter(offsets)
31 func (offsets sliceChunksIter) Iter(f func(ChunkIndex)) {
32 for _, offset := range offsets {
37 func requestSetFromSlice(rs ...RequestIndex) (ret roaring.Bitmap) {
43 gob.Register(intPeerId(0))
48 func (i intPeerId) Uintptr() uintptr {
52 var hasAllRequests = func() (all roaring.Bitmap) {
53 all.AddRange(0, roaring.MaxRange)
57 func checkNumRequestsAndInterest(c *qt.C, next PeerNextRequestState, num uint64, interest bool) {
58 addressableBm := next.Requests
59 c.Check(addressableBm.GetCardinality(), qt.ContentEquals, num)
60 c.Check(next.Interested, qt.Equals, interest)
63 func checkResultsRequestsLen(t *testing.T, reqs roaring.Bitmap, l uint64) {
64 qt.Check(t, reqs.GetCardinality(), qt.Equals, l)
67 var peerNextRequestStateChecker = qt.CmpEquals(
70 func(bm roaring.Bitmap) []uint32 {