--- /dev/null
+package torrent
+
+import (
+ "github.com/anacrolix/torrent/storage"
+)
+
+type clientPieceRequestOrderKeyTypes interface {
+ storage.TorrentCapacity | *Torrent
+}
+
+type clientPieceRequestOrderKey[T clientPieceRequestOrderKeyTypes] struct {
+ inner T
+}
+
+func (me clientPieceRequestOrderKey[T]) isAClientPieceRequestOrderKeyType() {}
+
+type clientPieceRequestOrderKeySumType interface {
+ isAClientPieceRequestOrderKeyType()
+}
// info has been obtained, there's no knowing if an infohash belongs to v1 or v2.
torrentsByShortHash map[InfoHash]*Torrent
- pieceRequestOrder map[interface{}]*request_strategy.PieceRequestOrder
+ pieceRequestOrder map[clientPieceRequestOrderKeySumType]*request_strategy.PieceRequestOrder
acceptLimiter map[ipStr]int
numHalfOpen int
import (
g "github.com/anacrolix/generics"
+ "github.com/anacrolix/torrent/storage"
request_strategy "github.com/anacrolix/torrent/request-strategy"
)
}
}
-func (t *Torrent) clientPieceRequestOrderKey() interface{} {
+func (t *Torrent) clientPieceRequestOrderKey() clientPieceRequestOrderKeySumType {
if t.storage.Capacity == nil {
- return t
+ return clientPieceRequestOrderKey[*Torrent]{t}
}
- return t.storage.Capacity
+ return clientPieceRequestOrderKey[storage.TorrentCapacity]{t.storage.Capacity}
}
func (t *Torrent) deletePieceRequestOrder() {