public void PickBundle_3()
        {
            var messages = new List <BlockInfo> ();

            peers[2].IsChoking = false;
            peers[2].BitField.SetAll(true);
            messages.Add(picker.PickPiece(peers[2], peers[2].BitField, peers).Value);

            peer.IsChoking = false;

            for (int i = 0; i < 7; i++)
            {
                peer.BitField[i] = true;
            }

            IList <BlockInfo> bundle;
            BlockInfo?        request;

            while ((bundle = picker.PickPiece(peer, peer.BitField, peers, torrentData.BlocksPerPiece * 5)) != null)
            {
                messages.AddRange(bundle);
            }
            while ((request = picker.ContinueAnyExistingRequest(peer, 0, bitfield.Length - 1)) != null)
            {
                messages.Add(request.Value);
            }

            Assert.AreEqual(torrentData.BlocksPerPiece * 7, messages.Count, "#2");
        }
Ejemplo n.º 2
0
 public static BlockInfo?ContinueAnyExistingRequest(this IPiecePicker picker, IPeer peer, int startIndex, int endIndex)
 => picker.ContinueAnyExistingRequest(peer, startIndex, endIndex, 1);
Ejemplo n.º 3
0
        public void PickBundle_3()
        {
            var messages = new List <BlockInfo> ();

            peers[2].IsChoking = false;
            peers[2].BitField.SetAll(true);
            messages.Add(picker.PickPiece(peers[2], peers[2].BitField, peers).Value);

            peer.IsChoking = false;

            for (int i = 0; i < 7; i++)
            {
                peer.BitField[i] = true;
            }

            int       requested;
            BlockInfo?request;

            Span <BlockInfo> buffer = stackalloc BlockInfo[torrentData.BlocksPerPiece * 5];

            while ((requested = picker.PickPiece(peer, peer.BitField, peers, buffer)) > 0)
            {
                for (int i = 0; i < requested; i++)
                {
                    messages.Add(buffer[i]);
                }
            }
            while ((request = picker.ContinueAnyExistingRequest(peer, 0, bitfield.Length - 1)) != null)
            {
                messages.Add(request.Value);
            }

            Assert.AreEqual(torrentData.BlocksPerPiece * 7, messages.Count, "#2");
        }