aboutsummaryrefslogtreecommitdiff
path: root/meta/piece.go
blob: bc93a133ae23debec002538f1e9c54ba9b120ce9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package meta

import "crypto/sha1"

type Pieces []Piece

type Piece struct {
	Offset int64
	Length int
	Sum    [sha1.Size]byte
	Ok     bool
}

func (p *Piece) Check(b []byte) bool {
	if !p.Ok {
		p.Ok = sha1.Sum(b) == p.Sum
	}
	return p.Ok
}

func (p Pieces) Good() float64 {
	var good int
	for _, v := range p {
		if v.Ok {
			good++
		}
	}
	return float64(good) * 100.0 / float64(len(p))
}