/// <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));
        }
Beispiel #2
0
        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);
        }