Remove unnecessary locking in Torrent.Piece

This commit is contained in:
Matt Joiner 2019-12-18 16:49:15 +11:00
parent 5f1d937b62
commit 4104880a66
2 changed files with 6 additions and 7 deletions

7
t.go
View File

@ -15,8 +15,7 @@ func (t *Torrent) InfoHash() metainfo.Hash {
return t.infoHash
}
// Returns a channel that is closed when the info (.Info()) for the torrent
// has become available.
// Returns a channel that is closed when the info (.Info()) for the torrent has become available.
func (t *Torrent) GotInfo() <-chan struct{} {
t.cl.lock()
defer t.cl.unlock()
@ -243,7 +242,5 @@ func (t *Torrent) AddTrackers(announceList [][]string) {
}
func (t *Torrent) Piece(i pieceIndex) *Piece {
t.cl.lock()
defer t.cl.unlock()
return &t.pieces[i]
return t.piece(i)
}

View File

@ -36,7 +36,8 @@ func (t *Torrent) chunkIndexSpec(chunkIndex pp.Integer, piece pieceIndex) chunkS
return chunkIndexSpec(chunkIndex, t.pieceLength(piece), t.chunkSize)
}
// Maintains state of torrent within a Client.
// Maintains state of torrent within a Client. Many methods should not be called before the info is
// available, see .Info and .GotInfo.
type Torrent struct {
// Torrent-level aggregate statistics. First in struct to ensure 64-bit
// alignment. See #262.
@ -1698,7 +1699,8 @@ func (t *Torrent) queuePieceCheck(pieceIndex pieceIndex) {
t.tryCreateMorePieceHashers()
}
// Forces all the pieces to be re-hashed. See also Piece.VerifyData.
// Forces all the pieces to be re-hashed. See also Piece.VerifyData. This should not be called
// before the Info is available.
func (t *Torrent) VerifyData() {
for i := pieceIndex(0); i < t.NumPieces(); i++ {
t.Piece(i).VerifyData()