Esempio n. 1
0
        public static BlockInfo?PickPiece(this IPiecePicker picker, IPeer peer, BitField available, IReadOnlyList <IPeer> otherPeers)
        {
            Span <BlockInfo> buffer = stackalloc BlockInfo[1];
            var result = picker.PickPiece(peer, available, otherPeers, 0, available.Length - 1, buffer);

            return(result == 1 ? (BlockInfo?)buffer[0] : null);
        }
Esempio n. 2
0
        public static BlockInfo?PickPiece(this IPiecePicker picker, IPeer peer, BitField available)
        {
            Span <BlockInfo> buffer = stackalloc BlockInfo[1];
            var picked = picker.PickPiece(peer, available, Array.Empty <IPeer> (), 0, available.Length - 1, buffer);

            return(picked == 1 ? (BlockInfo?)buffer[0] : null);
        }
        public void DoesntHaveSuggestedPiece()
        {
            peer.IsChoking        = false;
            peer.SupportsFastPeer = true;
            peer.SuggestedPieces.AddRange(new[] { 1, 2, 3, 4 });
            peer.BitField.SetAll(true);
            picker = new StandardPicker();
            picker.Initialise(torrentData);
            var bundle = picker.PickPiece(peer, new BitField(peer.BitField.Length), peers, 1, 0, peer.BitField.Length - 1);

            Assert.IsNull(bundle);
        }
        public void DoesntHaveSuggestedPiece()
        {
            Span <BlockInfo> buffer = stackalloc BlockInfo[1];

            peer.IsChoking        = false;
            peer.SupportsFastPeer = true;
            peer.SuggestedPieces.AddRange(new[] { 1, 2, 3, 4 });
            peer.BitField.SetAll(true);
            picker = new StandardPicker();
            picker.Initialise(torrentData);
            var requested = picker.PickPiece(peer, new BitField(peer.BitField.Length), peers, 0, peer.BitField.Length - 1, buffer);

            Assert.AreEqual(0, requested);
        }
Esempio n. 5
0
 public static int PickPiece(this IPiecePicker picker, IPeer peer, BitField available, IReadOnlyList <IPeer> otherPeers, Span <BlockInfo> requests)
 {
     return(picker.PickPiece(peer, available, otherPeers, 0, available.Length - 1, requests));
 }
        public void RequestFastSeeder()
        {
            int[] allowedFast = { 1, 2, 3, 5, 8, 13, 21 };
            peers[0].SupportsFastPeer = true;
            peers[0].IsAllowedFastPieces.AddRange((int[])allowedFast.Clone());

            peers[0].BitField.SetAll(true);  // Lets pretend he has everything
            for (int i = 0; i < 7; i++)
            {
                for (int j = 0; j < 16; j++)
                {
                    var msg = picker.PickPiece(peers[0], peers[0].BitField, peers);
                    Assert.IsNotNull(msg, "#1." + j);
                    Assert.IsTrue(Array.IndexOf(allowedFast, msg.Value.PieceIndex) > -1, "#2." + j);
                }
            }
            Assert.IsNull(picker.PickPiece(peers[0], peers[0].BitField, peers));
        }
Esempio n. 7
0
 public static IList <BlockInfo> PickPiece(this IPiecePicker picker, IPeer peer, BitField available, IReadOnlyList <IPeer> otherPeers, int count)
 {
     return(picker.PickPiece(peer, available, otherPeers, count, 0, available.Length - 1));
 }
Esempio n. 8
0
        public static BlockInfo?PickPiece(this IPiecePicker picker, IPeer peer, BitField available, IReadOnlyList <IPeer> otherPeers)
        {
            var result = picker.PickPiece(peer, available, otherPeers, 1, 0, available.Length - 1);

            return(result?.Single());
        }
Esempio n. 9
0
        public static BlockInfo?PickPiece(this IPiecePicker picker, IPeer peer, BitField available)
        {
            var result = picker.PickPiece(peer, available, Array.Empty <IPeer> (), 1, 0, available.Length - 1);

            return(result?.Single());
        }