public EndGameSwitcher(StandardPicker standard, EndGamePicker endgame, int blocksPerPiece, TorrentManager torrentManager) : base(null) { this.standard = standard; this.endgame = endgame; this.blocksPerPiece = blocksPerPiece; this.torrentManager = torrentManager; }
public void ChangePicker(PiecePicker picker) { Check.Picker(picker); ClientEngine.MainLoop.QueueWait((MainLoopTask) delegate { this.pieceManager.ChangePicker(picker, bitfield, torrent.Files); }); }
public void DoesntHaveSuggestedPiece() { peer.IsChoking = false; peer.SupportsFastPeer = true; peer.SuggestedPieces.AddRange(new int[] { 1, 2, 3, 4 }); peer.BitField.SetAll(true); picker = new StandardPicker(); picker.Initialise(rig.Manager.Bitfield, rig.Torrent.Files, new List <Piece>()); MessageBundle bundle = picker.PickPiece(peer, new System.Net.BitTorrent.Common.BitField(peer.BitField.Length), peers, 1, 0, peer.BitField.Length); Assert.IsNull(bundle); }
internal void ChangePicker(PiecePicker picker, BitField bitfield, TorrentFile[] files) { if (unhashedPieces.Length != bitfield.Length) { unhashedPieces = new BitField(bitfield.Length); } picker = new IgnoringPicker(bitfield, picker); picker = new IgnoringPicker(unhashedPieces, picker); IEnumerable <Piece> pieces = Picker == null ? new List <Piece>() : Picker.ExportActiveRequests(); picker.Initialise(bitfield, files, pieces); this.picker = picker; }
public virtual void Setup() { // Yes, this is horrible. Deal with it. rig = TestRig.CreateMultiFile(); peers = new List <PeerId>(); picker = new IgnoringPicker(rig.Manager.Bitfield, new StandardPicker()); picker.Initialise(rig.Manager.Bitfield, rig.Manager.Torrent.Files, new List <Piece>()); peer = new PeerId(new Peer(new string('a', 20), new Uri("tcp://BLAH")), rig.Manager); for (int i = 0; i < 20; i++) { PeerId p = new PeerId(new Peer(new string(i.ToString()[0], 20), new Uri("tcp://" + i)), rig.Manager); p.SupportsFastPeer = true; peers.Add(p); } }
protected PiecePicker(PiecePicker picker) { this.picker = picker; }
internal PieceManager() { picker = new NullPicker(); unhashedPieces = new BitField(0); }
public RandomisedPicker(PiecePicker picker) : base(picker) { }
public LoggingPicker(PiecePicker picker) : base(picker) { }
public RarestFirstPicker(PiecePicker picker) : base(picker) { rarest = new Stack <BitField>(); spares = new Stack <BitField>(); }
public PriorityPicker(PiecePicker picker) : base(picker) { }
/// <summary> /// Create a new SlidingWindowPicker with the given set sizes. The sliding window will be positioned to the start /// of the first file to be downloaded /// </summary> /// <param name="bitField">The bitfield associated with the torrent</param> /// <param name="torrentFiles">The files that are available in this torrent</param> /// <param name="highPrioritySetSize">Size of high priority set</param> /// <param name="mediumToHighRatio">Size of medium priority set as a multiple of the high priority set size</param> internal SlidingWindowPicker(PiecePicker picker, int highPrioritySetSize, int mediumToHighRatio) : base(picker) { this.highPrioritySetSize = highPrioritySetSize; this.ratio = mediumToHighRatio; }
/// <summary> /// Creates a new piece picker with support for prioritization of files. The sliding window will be positioned to the start /// of the first file to be downloaded /// </summary> /// <param name="bitField">The bitfield associated with the torrent</param> /// <param name="torrentFiles">The files that are available in this torrent</param> /// <param name="highPrioritySetSize">Size of high priority set</param> internal SlidingWindowPicker(PiecePicker picker, int highPrioritySetSize) : this(picker, highPrioritySetSize, 4) { }
/// <summary> /// Empty constructor for changing piece pickers /// </summary> public SlidingWindowPicker(PiecePicker picker) : base(picker) { }
public IgnoringPicker(BitField bitfield, PiecePicker picker) : base(picker) { this.bitfield = bitfield; this.temp = new BitField(bitfield.Length); }