client.go | 6 +++--- generics/map.go | 15 --------------- go.mod | 1 + go.sum | 2 ++ option/option.go | 21 --------------------- peerconn.go | 7 +++---- smartban.go | 2 +- torrent.go | 4 ++-- diff --git a/client.go b/client.go index 773159e309dd00106ffb4824aff55b1257fcedd8..6c8befec0b59cb1617702a74236b82a2094e4197 100644 --- a/client.go +++ b/client.go @@ -22,6 +22,7 @@ "github.com/anacrolix/chansync/events" "github.com/anacrolix/dht/v2" "github.com/anacrolix/dht/v2/krpc" + "github.com/anacrolix/generics" "github.com/anacrolix/log" "github.com/anacrolix/missinggo/perf" "github.com/anacrolix/missinggo/pubsub" @@ -29,8 +30,6 @@ "github.com/anacrolix/missinggo/v2" "github.com/anacrolix/missinggo/v2/bitmap" "github.com/anacrolix/missinggo/v2/pproffd" "github.com/anacrolix/sync" - "github.com/anacrolix/torrent/generics" - "github.com/anacrolix/torrent/option" request_strategy "github.com/anacrolix/torrent/request-strategy" "github.com/davecgh/go-spew/spew" "github.com/dustin/go-humanize" @@ -39,6 +38,7 @@ "github.com/pion/datachannel" "golang.org/x/time/rate" "github.com/anacrolix/chansync" + . "github.com/anacrolix/generics" "github.com/anacrolix/torrent/bencode" "github.com/anacrolix/torrent/internal/limiter" @@ -1518,7 +1518,7 @@ // TODO: Need to be much more explicit about this, including allowing non-IP bannable addresses. if remoteAddr != nil { netipAddrPort, err := netip.ParseAddrPort(remoteAddr.String()) if err == nil { - c.bannableAddr = option.Some(netipAddrPort.Addr()) + c.bannableAddr = Some(netipAddrPort.Addr()) } } c.peerImpl = c diff --git a/generics/map.go b/generics/map.go deleted file mode 100644 index 23ee5c58a08aa74d8379b21c2f433db4965353ab..0000000000000000000000000000000000000000 --- a/generics/map.go +++ /dev/null @@ -1,15 +0,0 @@ -package generics - -func MakeMapIfNilAndSet[K comparable, V any](pm *map[K]V, k K, v V) { - m := *pm - if m == nil { - m = make(map[K]V) - *pm = m - } - m[k] = v -} - -// Does this exist in the maps package? -func MakeMap[K comparable, V any](pm *map[K]V) { - *pm = make(map[K]V) -} diff --git a/go.mod b/go.mod index 0b4274491d9e2138258b8700619a7f16c18ffab5..ee5a89e6601faa7704c8a8e470610966686ff1d7 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,7 @@ github.com/anacrolix/chansync v0.3.0 github.com/anacrolix/dht/v2 v2.14.1-0.20211220010335-4062f7927abf github.com/anacrolix/envpprof v1.1.1 github.com/anacrolix/fuse v0.2.0 + github.com/anacrolix/generics v0.0.0-20220121083126-c81e77b56d6d github.com/anacrolix/go-libutp v1.1.0 github.com/anacrolix/log v0.10.0 github.com/anacrolix/missinggo v1.3.0 diff --git a/go.sum b/go.sum index 739951dcdc71377e2adc6b4de882ee0be8f9181f..2f5dc60c7e27390b259f9e552cbe719645d4220e 100644 --- a/go.sum +++ b/go.sum @@ -37,6 +37,8 @@ github.com/anacrolix/envpprof v1.1.1 h1:sHQCyj7HtiSfaZAzL2rJrQdyS7odLqlwO6nhk/tG/j8= github.com/anacrolix/envpprof v1.1.1/go.mod h1:My7T5oSqVfEn4MD4Meczkw/f5lSIndGAKu/0SM/rkf4= github.com/anacrolix/fuse v0.2.0 h1:pc+To78kI2d/WUjIyrsdqeJQAesuwpGxlI3h1nAv3Do= github.com/anacrolix/fuse v0.2.0/go.mod h1:Kfu02xBwnySDpH3N23BmrP3MDfwAQGRLUCj6XyeOvBQ= +github.com/anacrolix/generics v0.0.0-20220121083126-c81e77b56d6d h1:hKdj31gsNwxan3Lr4S5N1wXQI+0pMnX6/qZt75GSq7U= +github.com/anacrolix/generics v0.0.0-20220121083126-c81e77b56d6d/go.mod h1:SommN0/3j+jrAnjopAZfqkREMGw59ELwloDcx6Y0KLA= github.com/anacrolix/go-libutp v1.1.0 h1:89XK+0NBTaKgSoG/v5OfDK0yoyrt2HInfg46I1BaT2E= github.com/anacrolix/go-libutp v1.1.0/go.mod h1:so9zroOUhFPGnIkddyflaCCl+xdTsRSq97/AOQ2/Hjk= github.com/anacrolix/log v0.3.0/go.mod h1:lWvLTqzAnCWPJA08T2HCstZi0L1y2Wyvm3FJgwU9jwU= diff --git a/option/option.go b/option/option.go deleted file mode 100644 index f53d5bb56d3a3d89a4edeecd11201b652086a71f..0000000000000000000000000000000000000000 --- a/option/option.go +++ /dev/null @@ -1,21 +0,0 @@ -package option - -type T[V any] struct { - ok bool - value V -} - -func (me *T[V]) Ok() bool { - return me.ok -} - -func (me *T[V]) Value() V { - if !me.ok { - panic("not set") - } - return me.value -} - -func Some[V any](value V) T[V] { - return T[V]{ok: true, value: value} -} diff --git a/peerconn.go b/peerconn.go index 2dd2ced451a987de52924f0dc3ed6f88c7486659..fcdf4646c9a259c95b98cf6de73f853bb113b026 100644 --- a/peerconn.go +++ b/peerconn.go @@ -15,13 +15,12 @@ "sync/atomic" "time" "github.com/RoaringBitmap/roaring" + "github.com/anacrolix/chansync" + . "github.com/anacrolix/generics" "github.com/anacrolix/log" "github.com/anacrolix/missinggo/iter" "github.com/anacrolix/missinggo/v2/bitmap" "github.com/anacrolix/multiless" - "github.com/anacrolix/torrent/option" - - "github.com/anacrolix/chansync" "github.com/anacrolix/torrent/bencode" "github.com/anacrolix/torrent/metainfo" "github.com/anacrolix/torrent/mse" @@ -68,7 +67,7 @@ outgoing bool Network string RemoteAddr PeerRemoteAddr - bannableAddr option.T[bannableAddr] + bannableAddr Option[bannableAddr] // True if the connection is operating over MSE obfuscation. headerEncrypted bool cryptoMethod mse.CryptoMethod diff --git a/smartban.go b/smartban.go index 74f645e2865d2b2269333430c0eea24b6cf93e47..15b4d44b4ed3bcabbe46671f3c43d2436d6c7126 100644 --- a/smartban.go +++ b/smartban.go @@ -5,7 +5,7 @@ "bytes" "crypto/sha1" "net/netip" - "github.com/anacrolix/torrent/generics" + "github.com/anacrolix/generics" "github.com/anacrolix/torrent/smartban" ) diff --git a/torrent.go b/torrent.go index 078dca22945e55c6e97116ee02f192d3cf702659..33ca78728d113d16721afcba264199126c92b1a5 100644 --- a/torrent.go +++ b/torrent.go @@ -20,6 +20,7 @@ "github.com/RoaringBitmap/roaring" "github.com/anacrolix/chansync" "github.com/anacrolix/chansync/events" "github.com/anacrolix/dht/v2" + . "github.com/anacrolix/generics" "github.com/anacrolix/log" "github.com/anacrolix/missinggo/perf" "github.com/anacrolix/missinggo/pubsub" @@ -28,7 +29,6 @@ "github.com/anacrolix/missinggo/v2" "github.com/anacrolix/missinggo/v2/bitmap" "github.com/anacrolix/multiless" "github.com/anacrolix/sync" - "github.com/anacrolix/torrent/option" request_strategy "github.com/anacrolix/torrent/request-strategy" "github.com/davecgh/go-spew/spew" "github.com/pion/datachannel" @@ -2139,7 +2139,7 @@ } return } netipAddr := netip.MustParseAddr(remoteIp.String()) - if option.Some(netipAddr) != p.bannableAddr { + if Some(netipAddr) != p.bannableAddr { log.Printf( "peer remote ip does not match its bannable addr [peer=%v, remote ip=%v, bannable addr=%v]", p, remoteIp, p.bannableAddr)