-
-func (m *monitor) checkStatusRoutine() {
- peers := peers.NewPeerSet(m.sw)
- if err := m.prepareReactors(peers); err != nil {
- log.Fatal(err)
- }
-
- protocolReactor, ok := m.sw.GetReactors()["PROTOCOL"]
- if !ok {
- log.Fatal("protocolReactor not found")
- }
-
- bestHeight := uint64(0)
- ticker := time.NewTicker(time.Duration(m.cfg.CheckFreqSeconds) * time.Second)
- // TODO: change back to start immediately
- for range ticker.C {
- for _, peer := range m.sw.GetPeers().List() {
- peer.Start()
- protocolReactor.AddPeer(peer)
- }
-
- 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 {
- peers.RemovePeer(p.ID())
- }
- }
-
- for _, peerInfo := range peers.GetPeerInfos() {
- if peerInfo.Height > bestHeight {
- bestHeight = peerInfo.Height
- }
-
- m.savePeerInfo(peerInfo)
- }
- log.Info("bestHeight", bestHeight)
-
- for _, peer := range m.sw.GetPeers().List() {
- p := peers.GetPeer(peer.ID())
- if p == nil {
- continue
- }
-
- peers.RemovePeer(p.ID())
- }
-
- // TODO:
- // msg := struct{ msgs.BlockchainMessage }{&msgs.GetBlockMessage{Height: bestHeight + 1}}
- // for _, peer := range m.sw.GetPeers().List() {
- // peers.SendMsg(peer.ID(), msgs.BlockchainChannel, msg)
- // }
- }
-}