/// <summary> /// The peer has reported having an additional piece. /// </summary> /// <param name="pieceIndex">The piece index.</param> protected virtual void OnHavePiece(int pieceIndex) { if (remoteBitField == null) { remoteBitField = new BitField(torrent.PieceCount); } remoteBitField.Set(pieceIndex, true); HavePieceReceived.SafeInvoke(this, new PieceEventArgs(pieceIndex)); }
private void OnConnectionHavePiece(object sender, PieceEventArgs e) { if (bitField == null) { bitField = new BitField(torrent.PieceCount); } bitField.Set(e.PieceIndex, true); bool isCompleted = bitField.HasAllSet(); if (isCompleted != this.isCompleted) { this.isCompleted = isCompleted; if (isCompleted) { OnPeerCompleted(); } } HavePieceReceived.SafeInvoke(this, e); }