aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-07-13 01:55:09 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-07-13 01:55:09 +0200
commitbd954772ebf81c7b7c32f19f9973c9007a6442b1 (patch)
tree99da981752c1543be65e6f48babf9766db4667f2
parent5d77b26dac562e5379d5f5ccf6ae37759e862a9e (diff)
BitField
-rw-r--r--cmd/btcheck/main.go1
-rw-r--r--meta/piece.go16
2 files changed, 16 insertions, 1 deletions
diff --git a/cmd/btcheck/main.go b/cmd/btcheck/main.go
index 24e4540..09844a6 100644
--- a/cmd/btcheck/main.go
+++ b/cmd/btcheck/main.go
@@ -42,4 +42,5 @@ func main() {
pieces[i] = p
}
fmt.Printf("%6.2f%%\n", pieces.Good())
+ fmt.Println(pieces.BitField())
}
diff --git a/meta/piece.go b/meta/piece.go
index bc93a13..354db9a 100644
--- a/meta/piece.go
+++ b/meta/piece.go
@@ -1,6 +1,10 @@
package meta
-import "crypto/sha1"
+import (
+ "crypto/sha1"
+
+ "dim13.org/btget/bitfield"
+)
type Pieces []Piece
@@ -27,3 +31,13 @@ func (p Pieces) Good() float64 {
}
return float64(good) * 100.0 / float64(len(p))
}
+
+func (p Pieces) BitField() bitfield.BitField {
+ bf := bitfield.New(len(p))
+ for i, v := range p {
+ if v.Ok {
+ bf.Set(i)
+ }
+ }
+ return bf
+}