]> Sergey Matveev's repositories - btrtrc.git/blobdiff - metainfo/piece.go
Drop support for go 1.20
[btrtrc.git] / metainfo / piece.go
index a3b7683c342a79ff621bbd2d6706c5df9d5d4473..d8895384d0a1858d17bd3d08fdf89dd4672b3f99 100644 (file)
@@ -1,24 +1,28 @@
 package metainfo
 
-import "github.com/anacrolix/missinggo"
-
 type Piece struct {
-       Info *InfoEx
-       i    int
+       Info *Info // Can we embed the fields here instead, or is it something to do with saving memory?
+       i    pieceIndex
 }
 
-func (me Piece) Length() int64 {
-       if me.i == me.Info.NumPieces()-1 {
-               return me.Info.TotalLength() - int64(me.i)*me.Info.PieceLength
+type pieceIndex = int
+
+func (p Piece) Length() int64 {
+       if int(p.i) == p.Info.NumPieces()-1 {
+               return p.Info.TotalLength() - int64(p.i)*p.Info.PieceLength
        }
-       return me.Info.PieceLength
+       return p.Info.PieceLength
 }
 
-func (me Piece) Offset() int64 {
-       return int64(me.i) * me.Info.PieceLength
+func (p Piece) Offset() int64 {
+       return int64(p.i) * p.Info.PieceLength
 }
 
-func (me Piece) Hash() (ret Hash) {
-       missinggo.CopyExact(&ret, me.Info.Pieces[me.i*20:(me.i+1)*20])
+func (p Piece) Hash() (ret Hash) {
+       copy(ret[:], p.Info.Pieces[p.i*HashSize:(p.i+1)*HashSize])
        return
 }
+
+func (p Piece) Index() pieceIndex {
+       return p.i
+}