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); }
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); }
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)); }
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)); }
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()); }
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()); }