-
-func (m *monitor) checkStatusRoutine() {
- peers := peers.NewPeerSet(m.sw)
- if err := m.prepareReactors(peers); err != nil {
- log.Fatal(err)
- }
-
- bestHeight := uint64(0)
- for range m.checkStatusCh {
- for _, peer := range m.sw.GetPeers().List() {
- peer.Start()
- peers.AddPeer(peer)
- }
- log.Infof("%d connected peers: %v", len(m.sw.GetPeers().List()), m.sw.GetPeers().List())
-
- for _, peer := range m.sw.GetPeers().List() {
- p := peers.GetPeer(peer.ID())
- if p == nil {
- continue
- }
-
- if err := p.SendStatus(m.chain.BestBlockHeader(), m.chain.LastIrreversibleHeader()); err != nil {
- log.Error(err)
- peers.RemovePeer(p.ID())
- }
- }
-
- for _, peerInfo := range peers.GetPeerInfos() {
- if peerInfo.Height > bestHeight {
- bestHeight = peerInfo.Height
- }
- }
- log.Info("bestHeight: ", bestHeight)
- m.processPeerInfos(peers.GetPeerInfos())
-
- for _, peer := range m.sw.GetPeers().List() {
- p := peers.GetPeer(peer.ID())
- if p == nil {
- continue
- }
-
- peers.RemovePeer(p.ID())
- }
- log.Info("Disonnect all peers.")
-
- m.Unlock()
- m.dialCh <- struct{}{}
- }
-}