public override bool Equals(object obj) { if (obj is BlockRequest) { BlockRequest other = (BlockRequest)obj; return(this == other); } else { return(false); } }
private BlockRequest NextBlockForPiece(Piece piece, IBlockRequests blockRequests) { for (int blockOffset = 0; blockOffset < piece.Size; blockOffset += BlockRequestSize) { int blockSize = blockOffset < piece.Size - BlockRequestSize ? BlockRequestSize : piece.Size - blockOffset; var blockToRequest = new BlockRequest(piece.Index, blockOffset, blockSize); if (!blockRequests.RequestedBlocks.Contains(blockToRequest) && !blockRequests.DownloadedBlocks.Contains(blockToRequest)) { return(blockToRequest); } } // No blocks to request for specified piece return(null); }
public static Block ToBlock(this BlockRequest request, byte[] data) { return(new Block(request.PieceIndex, request.Offset, data)); }
private void SetBlockRequestedByPeer(PeerConnection peer, BlockRequest blockRequest) { peer.RequestedByRemotePeer.Add(blockRequest); }
private void SetBlockRequestedByPeer(BitTorrentPeer peer, BlockRequest blockRequest) { peer.RequestedByRemotePeer.Add(blockRequest); }