OSDN Git Service

init discvWg
authorHAOYUatHZ <haoyu@protonmail.com>
Tue, 27 Aug 2019 07:35:24 +0000 (15:35 +0800)
committerHAOYUatHZ <haoyu@protonmail.com>
Tue, 27 Aug 2019 07:35:24 +0000 (15:35 +0800)
toolbar/precog/monitor/discover.go
toolbar/precog/monitor/monitor.go

index bf379c6..002cba0 100644 (file)
@@ -1,6 +1,7 @@
 package monitor
 
 import (
+       "sync"
        "time"
 
        log "github.com/sirupsen/logrus"
@@ -14,20 +15,22 @@ var (
        discvFreqSec = 60
 )
 
-func (m *monitor) discoveryRoutine() {
+func (m *monitor) discoveryRoutine(discvWg *sync.WaitGroup) {
        ticker := time.NewTicker(time.Duration(discvFreqSec) * time.Second)
+
        for range ticker.C {
                nodes := make([]*dht.Node, nodesToDiscv)
                n := m.sw.GetDiscv().ReadRandomNodes(nodes)
                m.Lock()
                for i := 0; i < n; i++ {
                        m.discvCh <- nodes[i]
+                       // wg.Add(1)
                }
                m.Unlock()
        }
 }
 
-func (m *monitor) collectDiscoveredNodes() {
+func (m *monitor) collectDiscoveredNodes(discvWg *sync.WaitGroup) {
        // nodeMap maps a node's public key to the node itself
        nodeMap := make(map[string]*dht.Node)
        for node := range m.discvCh {
index 90dfa93..3dc14a3 100644 (file)
@@ -119,8 +119,9 @@ func (m *monitor) Run() {
        }
 
        m.dialCh <- struct{}{}
-       go m.discoveryRoutine()
-       go m.collectDiscoveredNodes()
+       var discvWg sync.WaitGroup
+       go m.discoveryRoutine(&discvWg)
+       go m.collectDiscoveredNodes(&discvWg)
        go m.connectNodesRoutine()
        go m.checkStatusRoutine()
 }