aboutsummaryrefslogtreecommitdiff
path: root/meta/piece.go
blob: def03fbd6961b478883779774da9ac0156a149bd (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
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 {
	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))
}