)
func (m *monitor) connectNodesRoutine() {
- // TODO: change name?
ticker := time.NewTicker(time.Duration(m.cfg.CheckFreqSeconds) * time.Second)
for ; true; <-ticker.C {
<-m.dialCh
}
func (m *monitor) dialNodes() error {
- // m.Lock()
log.Info("Start to reconnect to nodes...")
var nodes []*orm.Node
if err := m.db.Model(&orm.Node{}).Find(&nodes).Error; err != nil {
m.sw.DialPeers(addresses)
log.Info("DialPeers done.")
m.checkStatusCh <- struct{}{}
- // m.Unlock()
return nil
}
for range ticker.C {
nodes := make([]*dht.Node, nodesToDiscv)
n := m.sw.GetDiscv().ReadRandomNodes(nodes)
- // TODO: improve
for i := 0; i < n; i++ {
m.discvCh <- nodes[i]
}
continue
}
log.Info("discover new node: ", node)
- // m.Lock()
-
- return
if err := m.upSertNode(&config.Node{
PublicKey: node.ID.String(),
} else {
log.Error(err)
}
-
- // m.Unlock()
}
}
bestHeight := uint64(0)
for range m.checkStatusCh {
- // m.Lock()
-
for _, peer := range m.sw.GetPeers().List() {
peer.Start()
peers.AddPeer(peer)
peers.RemovePeer(p.ID())
}
log.Info("Disonnect all peers.")
- // m.Unlock()
m.dialCh <- struct{}{}
}
}