public static IPiecePicker Wrap(IPiecePicker picker, IEnumerable <BitField> ignoringBitfields) { var result = picker; foreach (var bf in ignoringBitfields) { result = new IgnoringPicker(bf, result); } return(result); }
public void Initialise(ITorrentManagerInfo torrentData, IReadOnlyList <ReadOnlyBitField> ignoringBitfields) { TorrentData = torrentData.TorrentInfo !; IgnoringBitfields = ignoringBitfields; Temp = new BitField(TorrentData.PieceCount()); var standardPicker = new StandardPicker(); HighPriorityPicker = IgnoringPicker.Wrap(new PriorityPicker(standardPicker), ignoringBitfields); LowPriorityPicker = new RandomisedPicker(standardPicker); LowPriorityPicker = new RarestFirstPicker(LowPriorityPicker); LowPriorityPicker = new PriorityPicker(LowPriorityPicker); LowPriorityPicker = IgnoringPicker.Wrap(LowPriorityPicker, ignoringBitfields); LowPriorityPicker.Initialise(torrentData); HighPriorityPicker.Initialise(torrentData); }