OSDN Git Service

rollback upsert
authorHAOYUatHZ <haoyu@protonmail.com>
Tue, 27 Aug 2019 08:23:25 +0000 (16:23 +0800)
committerHAOYUatHZ <haoyu@protonmail.com>
Tue, 27 Aug 2019 08:23:25 +0000 (16:23 +0800)
toolbar/precog/monitor/discover.go
toolbar/precog/monitor/monitor.go

index 88d601b..1ec602d 100644 (file)
@@ -19,12 +19,14 @@ func (m *monitor) discoveryRoutine( /*discvWg *sync.WaitGroup*/ ) {
        for range ticker.C {
                nodes := make([]*dht.Node, nodesToDiscv)
                n := m.sw.GetDiscv().ReadRandomNodes(nodes)
-               m.collectDiscoveredNodes(nodes[:n])
+               for i := 0; i < n; i++ {
+                       m.discvCh <- nodes[i]
+               }
        }
 }
 
-func (m *monitor) collectDiscoveredNodes(nodes []*dht.Node) {
-       for _, node := range nodes {
+func (m *monitor) collectDiscoveredNodes() {
+       for node := range m.discvCh {
                if n, ok := m.nodeMap[node.ID.String()]; ok && n.String() == node.String() {
                        continue
                }
index 8b8c74e..fab14f1 100644 (file)
@@ -35,6 +35,7 @@ type monitor struct {
        privKey chainkd.XPrv
        chain   *mock.Chain
        txPool  *mock.Mempool
+       discvCh chan *dht.Node
        // nodeMap maps a node's public key to the node itself
        nodeMap       map[string]*dht.Node
        dialCh        chan struct{}
@@ -76,6 +77,7 @@ func NewMonitor(cfg *config.Config, db *gorm.DB) *monitor {
                privKey:       privKey.(chainkd.XPrv),
                chain:         chain,
                txPool:        txPool,
+               discvCh:       make(chan *dht.Node),
                nodeMap:       make(map[string]*dht.Node),
                dialCh:        make(chan struct{}, 1),
                checkStatusCh: make(chan struct{}, 1),