예제 #1
0
        public Block(byte[] data, int pieceIndex, int offset, int length)
        {
            Contract.Requires(offset >= 0);
            Contract.Requires(pieceIndex>=0);

            Data = data;
            Info = new BlockInfo(pieceIndex, offset, length);
        }
예제 #2
0
 public Block(byte[] data, int pieceIndex, int offset, int length)
 {
     Data = data;
     Info = new BlockInfo(pieceIndex, offset, length);
 }
예제 #3
0
 protected override void HandlePiece(PieceMessage piece, PeerState peer)
 {
     var blockInfo = new BlockInfo(piece.Index, piece.Offset, piece.Data.Length);
     //съобщаваме на BlockStrategistът, че сме получили блок, а той ни казва дали ни е нужен
     if(BlockStrategist.Received(blockInfo))
     {   //ако блока е нужен, записваме го
         WriteBlock(piece);
     }
     //понижаване на брояча за блоковете в изчакване
     peer.PendingBlocks--;
     //изпращане на нова заявка за блок към пиъра
     SendBlockRequests(peer);
 }