Move piece into its own file

This commit is contained in:
Matt Joiner 2015-04-08 02:14:35 +10:00
parent 814aa311c8
commit 6c48d59adb
2 changed files with 44 additions and 40 deletions

40
misc.go
View File

@ -4,8 +4,6 @@ import (
"crypto"
"errors"
"fmt"
"math/rand"
"sync"
"time"
"github.com/anacrolix/torrent/peer_protocol"
@ -33,44 +31,6 @@ func (ih *InfoHash) HexString() string {
return fmt.Sprintf("%x", ih[:])
}
type piecePriority byte
const (
piecePriorityNone piecePriority = iota
piecePriorityNormal
piecePriorityReadahead
piecePriorityNext
piecePriorityNow
)
type piece struct {
Hash pieceSum
PendingChunkSpecs map[chunkSpec]struct{}
Hashing bool
QueuedForHash bool
EverHashed bool
Event sync.Cond
Priority piecePriority
}
func (p *piece) shuffledPendingChunkSpecs() (css []chunkSpec) {
if len(p.PendingChunkSpecs) == 0 {
return
}
css = make([]chunkSpec, 0, len(p.PendingChunkSpecs))
for cs := range p.PendingChunkSpecs {
css = append(css, cs)
}
if len(css) <= 1 {
return
}
for i := range css {
j := rand.Intn(i + 1)
css[i], css[j] = css[j], css[i]
}
return
}
func lastChunkSpec(pieceLength peer_protocol.Integer) (cs chunkSpec) {
cs.Begin = (pieceLength - 1) / chunkSize * chunkSize
cs.Length = pieceLength - cs.Begin

44
piece.go Normal file
View File

@ -0,0 +1,44 @@
package torrent
import (
"math/rand"
"sync"
)
type piecePriority byte
const (
piecePriorityNone piecePriority = iota
piecePriorityNormal
piecePriorityReadahead
piecePriorityNext
piecePriorityNow
)
type piece struct {
Hash pieceSum
PendingChunkSpecs map[chunkSpec]struct{}
Hashing bool
QueuedForHash bool
EverHashed bool
Event sync.Cond
Priority piecePriority
}
func (p *piece) shuffledPendingChunkSpecs() (css []chunkSpec) {
if len(p.PendingChunkSpecs) == 0 {
return
}
css = make([]chunkSpec, 0, len(p.PendingChunkSpecs))
for cs := range p.PendingChunkSpecs {
css = append(css, cs)
}
if len(css) <= 1 {
return
}
for i := range css {
j := rand.Intn(i + 1)
css[i], css[j] = css[j], css[i]
}
return
}