mirror of
https://github.com/fluencelabs/tendermint
synced 2025-06-15 06:11:20 +00:00
move DialSeeds in from tendermint/tendermint/node
This commit is contained in:
27
switch.go
27
switch.go
@ -3,6 +3,7 @@ package p2p
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"math/rand"
|
||||||
"net"
|
"net"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -249,6 +250,32 @@ func (sw *Switch) startInitPeer(peer *Peer) {
|
|||||||
sw.addPeerToReactors(peer) // run AddPeer on each reactor
|
sw.addPeerToReactors(peer) // run AddPeer on each reactor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Dial a list of seeds in random order
|
||||||
|
// Spawns a go routine for each dial
|
||||||
|
func (sw *Switch) DialSeeds(seeds []string) {
|
||||||
|
// permute the list, dial them in random order.
|
||||||
|
perm := rand.Perm(len(seeds))
|
||||||
|
for i := 0; i < len(perm); i++ {
|
||||||
|
go func(i int) {
|
||||||
|
time.Sleep(time.Duration(rand.Int63n(3000)) * time.Millisecond)
|
||||||
|
j := perm[i]
|
||||||
|
addr := NewNetAddressString(seeds[j])
|
||||||
|
|
||||||
|
sw.dialSeed(addr)
|
||||||
|
}(i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (sw *Switch) dialSeed(addr *NetAddress) {
|
||||||
|
peer, err := sw.DialPeerWithAddress(addr)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Error dialing seed", "error", err)
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
log.Notice("Connected to seed", "peer", peer)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (sw *Switch) DialPeerWithAddress(addr *NetAddress) (*Peer, error) {
|
func (sw *Switch) DialPeerWithAddress(addr *NetAddress) (*Peer, error) {
|
||||||
log.Info("Dialing address", "address", addr)
|
log.Info("Dialing address", "address", addr)
|
||||||
sw.dialing.Set(addr.IP.String(), addr)
|
sw.dialing.Set(addr.IP.String(), addr)
|
||||||
|
Reference in New Issue
Block a user