- peers := t.peersAsSlice()
- sort.Slice(peers, func(_i, _j int) bool {
- i := peers[_i]
- j := peers[_j]
- if less, ok := multiless.New().EagerSameLess(
- i.downloadRate() == j.downloadRate(), i.downloadRate() < j.downloadRate(),
- ).LessOk(); ok {
- return less
- }
- return worseConn(i, j)
+ fmt.Fprintf(w, "webseeds:\n")
+ t.writePeerStatuses(w, maps.Values(t.webSeeds))
+
+ peerConns := maps.Keys(t.conns)
+ // Peers without priorities first, then those with. I'm undecided about how to order peers
+ // without priorities.
+ sort.Slice(peerConns, func(li, ri int) bool {
+ l := peerConns[li]
+ r := peerConns[ri]
+ ml := multiless.New()
+ lpp := g.ResultFromTuple(l.peerPriority()).ToOption()
+ rpp := g.ResultFromTuple(r.peerPriority()).ToOption()
+ ml = ml.Bool(lpp.Ok, rpp.Ok)
+ ml = ml.Uint32(rpp.Value, lpp.Value)
+ return ml.Less()