OSDN Git Service

peerLisr
authorHAOYUatHZ <haoyu@protonmail.com>
Sat, 31 Aug 2019 15:00:37 +0000 (23:00 +0800)
committerHAOYUatHZ <haoyu@protonmail.com>
Sat, 31 Aug 2019 15:00:37 +0000 (23:00 +0800)
toolbar/precog/monitor/connection.go
toolbar/precog/monitor/stats.go

index 475ba9c..f4e0b32 100644 (file)
@@ -36,19 +36,20 @@ func (m *monitor) dialNodes() error {
        // connected peers will be skipped in switch.DialPeers()
        m.sw.DialPeers(addresses)
        log.Info("DialPeers done.")
-       m.processDialResults()
-       m.checkStatus()
+       peerList := m.sw.GetPeers().List()
+       m.processDialResults(peerList)
+       m.checkStatus(peerList)
        return nil
 }
 
-func (m *monitor) checkStatus() {
-       for _, peer := range m.sw.GetPeers().List() {
+func (m *monitor) checkStatus(peerList []*p2p.Peer) {
+       for _, peer := range peerList {
                peer.Start()
                m.peers.AddPeer(peer)
        }
        log.WithFields(log.Fields{"num": len(m.sw.GetPeers().List()), "peers": m.sw.GetPeers().List()}).Info("connected peers")
 
-       for _, peer := range m.sw.GetPeers().List() {
+       for _, peer := range peerList {
                p := m.peers.GetPeer(peer.ID())
                if p == nil {
                        continue
@@ -68,7 +69,7 @@ func (m *monitor) checkStatus() {
        log.WithFields(log.Fields{"bestHeight": m.bestHeightSeen}).Info("peersInfo")
        m.processPeerInfos(m.peers.GetPeerInfos())
 
-       for _, peer := range m.sw.GetPeers().List() {
+       for _, peer := range peerList {
                p := m.peers.GetPeer(peer.ID())
                if p == nil {
                        continue
index b8991d9..efc13a8 100644 (file)
@@ -10,6 +10,7 @@ import (
 
        "github.com/vapor/crypto/ed25519/chainkd"
        "github.com/vapor/netsync/peers"
+       "github.com/vapor/p2p"
        "github.com/vapor/toolbar/precog/common"
        "github.com/vapor/toolbar/precog/config"
        "github.com/vapor/toolbar/precog/database/orm"
@@ -33,31 +34,27 @@ func (m *monitor) upsertNode(node *config.Node) error {
 }
 
 // TODO: maybe return connected nodes here for checkStatus
-func (m *monitor) processDialResults() error {
+func (m *monitor) processDialResults(peerList []*p2p.Peer) error {
+       return nil
+}
+
+func (m *monitor) processDialResults1() error {
        var ormNodes []*orm.Node
        if err := m.db.Model(&orm.Node{}).Find(&ormNodes).Error; err != nil {
                return err
        }
 
-       // TODO: ???
-       publicKeyMap := make(map[string]*orm.Node, len(ormNodes))
+       addressMap := make(map[string]*orm.Node, len(ormNodes))
        for _, ormNode := range ormNodes {
-               publicKeyMap[ormNode.PublicKey] = ormNode
+               addressMap[fmt.Sprintf("%s:%d", ormNode.IP, ormNode.Port)] = ormNode
        }
 
        connMap := make(map[string]bool, len(ormNodes))
        // connected peers
        for _, peer := range m.sw.GetPeers().List() {
-               xPub := &chainkd.XPub{}
-               if err := xPub.UnmarshalText([]byte(peer.Key)); err != nil {
-                       log.WithFields(log.Fields{"xpub": peer.Key}).Error("unmarshal xpub")
-                       continue
-               }
-
-               publicKey := xPub.PublicKey().String()
-               connMap[publicKey] = true
-               if err := m.processConnectedPeer(publicKeyMap[publicKey]); err != nil {
-                       log.WithFields(log.Fields{"peer publicKey": publicKey, "err": err}).Error("processConnectedPeer")
+               connMap[peer.ListenAddr] = true
+               if err := m.processConnectedPeer(addressMap[peer.ListenAddr]); err != nil {
+                       log.WithFields(log.Fields{"peer listenAddr": peer.ListenAddr, "err": err}).Error("processConnectedPeer")
                }
        }