public override void Initialise(BitField bitfield, TorrentFile[] files, IEnumerable <Piece> requests) { Requests.Clear(); foreach (var p in requests) { Requests.Add(p); } }
private void HandleRequest(PeerId id, RequestMessage m) { Request r = new Request(); r.PieceIndex = m.PieceIndex; r.RequestedOff = id; r.RequestLength = m.RequestLength; r.StartOffset = m.StartOffset; List <Request> current = requests.FindAll(delegate(Request req) { return(req.CompareTo(r) == 0); }); if (current.Count > 0) { foreach (Request request in current) { if (request.Verified) { if (id.TorrentManager.Bitfield[request.PieceIndex]) { Logger.Log(null, "Double request: {0}", m); Logger.Log(null, "From: {0} and {1}", id.PeerID, r.RequestedOff.PeerID); } else { // The piece failed a hashcheck, so ignore it this time requests.Remove(request); } } } } requests.Add(r); }