Ejemplo n.º 1
0
 public override bool Equals(object obj)
 {
     if (obj is BlockRequest)
     {
         BlockRequest other = (BlockRequest)obj;
         return(this == other);
     }
     else
     {
         return(false);
     }
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 public static Block ToBlock(this BlockRequest request, byte[] data)
 {
     return(new Block(request.PieceIndex, request.Offset, data));
 }
Ejemplo n.º 4
0
 private void SetBlockRequestedByPeer(PeerConnection peer, BlockRequest blockRequest)
 {
     peer.RequestedByRemotePeer.Add(blockRequest);
 }
Ejemplo n.º 5
0
 private void SetBlockRequestedByPeer(BitTorrentPeer peer, BlockRequest blockRequest)
 {
     peer.RequestedByRemotePeer.Add(blockRequest);
 }