OSDN Git Service

fix log
[bytom/vapor.git] / toolbar / precog / monitor / connection.go
1 package monitor
2
3 import (
4         "net"
5         "time"
6
7         log "github.com/sirupsen/logrus"
8         "github.com/vapor/p2p"
9         "github.com/vapor/toolbar/precog/database/orm"
10 )
11
12 func (m *monitor) connectNodesRoutine() {
13         // TODO: fix
14         // ticker := time.NewTicker(time.Duration(m.cfg.CheckFreqMinutes) * time.Minute)
15         ticker := time.NewTicker(time.Duration(m.cfg.CheckFreqMinutes) * time.Second)
16         for ; true; <-ticker.C {
17                 <-m.dialCh
18                 m.Lock()
19
20                 if err := m.dialNodes(); err != nil {
21                         log.WithFields(log.Fields{"err": err}).Error("dialNodes")
22                 }
23         }
24 }
25
26 func (m *monitor) dialNodes() error {
27         log.Info("Start to reconnect to nodes...")
28         var nodes []*orm.Node
29         if err := m.db.Model(&orm.Node{}).Find(&nodes).Error; err != nil {
30                 return err
31         }
32
33         addresses := make([]*p2p.NetAddress, 0)
34         for i := 0; i < len(nodes); i++ {
35                 address := p2p.NewNetAddressIPPort(net.ParseIP(nodes[i].IP), nodes[i].Port)
36                 addresses = append(addresses, address)
37         }
38
39         // connected peers will be skipped in switch.DialPeers()
40         m.sw.DialPeers(addresses)
41         log.Info("DialPeers done.")
42         m.processDialResults()
43         m.checkStatusCh <- struct{}{}
44         return nil
45 }