// ticker := time.NewTicker(time.Duration(m.cfg.CheckFreqMinutes) * time.Minute)
ticker := time.NewTicker(time.Duration(m.cfg.CheckFreqMinutes) * time.Second)
for ; true; <-ticker.C {
- m.Lock()
-
if err := m.dialNodes(); err != nil {
log.WithFields(log.Fields{"err": err}).Error("dialNodes")
}
m.peers.RemovePeer(p.ID())
}
log.Info("Disonnect all peers.")
-
- m.Unlock()
}
discvMap := make(map[string]*dht.Node)
ticker := time.NewTicker(time.Duration(discvFreqSec) * time.Second)
for range ticker.C {
- m.Lock()
-
nodes := make([]*dht.Node, nodesToDiscv)
num := m.sw.GetDiscv().ReadRandomNodes(nodes)
for _, node := range nodes[:num] {
discvMap[node.ID.String()] = node
}
}
-
- m.Unlock()
}
}
"os"
"os/user"
"strings"
- "sync"
"github.com/jinzhu/gorm"
log "github.com/sirupsen/logrus"
// 7. m这个为什么需要锁呀?一个是节点发现,一个是生命探测,中间交互都是数据库把?
type monitor struct {
- *sync.RWMutex
cfg *config.Config
db *gorm.DB
nodeCfg *vaporCfg.Config
}
return &monitor{
- RWMutex: &sync.RWMutex{},
cfg: cfg,
db: db,
nodeCfg: nodeCfg,