rank peers by their score instead of their memory address
The `<` function to compare peers was not exported, leading to the same peer be acquired over and over again until kick. `mixin` doesn't pull it into `peerCmp` without `*` export, and with the export no mixin needed.
This commit is contained in:
parent
885989f3df
commit
40242ac277
|
@ -456,15 +456,15 @@ func netKbps*(peer: Peer): float {.inline.} =
|
||||||
## Returns current network throughput average value in Kbps for peer ``peer``.
|
## Returns current network throughput average value in Kbps for peer ``peer``.
|
||||||
round(((peer.netThroughput.average / 1024) * 10_000) / 10_000)
|
round(((peer.netThroughput.average / 1024) * 10_000) / 10_000)
|
||||||
|
|
||||||
func `<`(a, b: Peer): bool =
|
# /!\ Must be exported to be seen by `peerCmp`
|
||||||
## Comparison function, which first checks peer's scores, and if the peers'
|
func `<`*(a, b: Peer): bool =
|
||||||
## score is equal it compares peers' network throughput.
|
## Comparison function indicating `true` if peer `a` ranks worse than peer `b`
|
||||||
if a.score < b.score:
|
if a.score != b.score:
|
||||||
true
|
a.score < b.score
|
||||||
elif a.score == b.score:
|
elif a.netThroughput.average != b.netThroughput.average:
|
||||||
(a.netThroughput.average < b.netThroughput.average)
|
a.netThroughput.average < b.netThroughput.average
|
||||||
else:
|
else:
|
||||||
false
|
system.`<`(a, b)
|
||||||
|
|
||||||
const
|
const
|
||||||
maxRequestQuota = 1000000
|
maxRequestQuota = 1000000
|
||||||
|
|
Loading…
Reference in New Issue