Browse Source

p2p/addrbook: simplify PickAddress

pull/859/head
Ethan Buchman 7 years ago
parent
commit
ed95cc160a
1 changed files with 7 additions and 26 deletions
  1. +7
    -26
      p2p/addrbook.go

+ 7
- 26
p2p/addrbook.go View File

@ -210,37 +210,18 @@ func (a *AddrBook) PickAddress(newBias int) *NetAddress {
oldCorrelation := math.Sqrt(float64(a.nOld)) * (100.0 - float64(newBias))
newCorrelation := math.Sqrt(float64(a.nNew)) * float64(newBias)
// pick a random peer from a random bucket
var bucket map[string]*knownAddress
pickFromOldBucket := (newCorrelation+oldCorrelation)*a.rand.Float64() < oldCorrelation
if pickFromOldBucket {
var bucket map[string]*knownAddress
for len(bucket) == 0 {
for len(bucket) == 0 {
if pickFromOldBucket {
bucket = a.bucketsOld[a.rand.Intn(len(a.bucketsOld))]
}
// pick a random ka from bucket.
randIndex := a.rand.Intn(len(bucket))
for _, ka := range bucket {
if randIndex == 0 {
return ka.Addr
}
randIndex--
}
cmn.PanicSanity("Should not happen")
} else {
var bucket map[string]*knownAddress = nil
for len(bucket) == 0 {
} else {
bucket = a.bucketsNew[a.rand.Intn(len(a.bucketsNew))]
}
// pick a random ka from bucket.
randIndex := a.rand.Intn(len(bucket))
for _, ka := range bucket {
if randIndex == 0 {
return ka.Addr
}
randIndex--
}
cmn.PanicSanity("Should not happen")
}
return nil
randIndex := a.rand.Intn(len(bucket))
return bucket[randIndex].Addr
}
// MarkGood marks the peer as good and moves it into an "old" bucket.


Loading…
Cancel
Save