OSDN Git Service

add moniker
authorHAOYUatHZ <haoyu@protonmail.com>
Mon, 19 Aug 2019 02:42:10 +0000 (10:42 +0800)
committerHAOYUatHZ <haoyu@protonmail.com>
Mon, 19 Aug 2019 02:42:10 +0000 (10:42 +0800)
netsync/peers/peer.go
p2p/peer.go
toolbar/precog/monitor/stats.go

index 4db047d..6fd6bb7 100644 (file)
@@ -35,6 +35,7 @@ var (
 
 //BasePeer is the interface for connection level peer
 type BasePeer interface {
+       Moniker() string
        Addr() net.Addr
        ID() string
        RemoteAddrHost() string
@@ -61,6 +62,7 @@ type BroadcastMsg interface {
 // PeerInfo indicate peer status snap
 type PeerInfo struct {
        ID                  string `json:"peer_id"`
+       Moniker             string `json:"moniker"`
        RemoteAddr          string `json:"remote_addr"`
        Height              uint64 `json:"height"`
        Ping                string `json:"ping"`
@@ -169,6 +171,7 @@ func (p *Peer) GetPeerInfo() *PeerInfo {
 
        return &PeerInfo{
                ID:                  p.ID(),
+               Moniker:             p.BasePeer.Moniker(),
                RemoteAddr:          p.Addr().String(),
                Height:              p.bestHeight,
                Ping:                ping.String(),
index 856d1e9..fbb663b 100644 (file)
@@ -194,6 +194,11 @@ func (p *Peer) IsLAN() bool {
        return p.isLAN
 }
 
+// Moniker returns peer's moniker.
+func (p *Peer) Moniker() string {
+       return p.NodeInfo.Moniker
+}
+
 // PubKey returns peer's public key.
 func (p *Peer) PubKey() string {
        return p.conn.(*connection.SecretConnection).RemotePubKey().String()
index 5bf9eb8..cf1250d 100644 (file)
@@ -47,13 +47,15 @@ func (m *monitor) upSertNode(node *config.Node) error {
 
 func (m *monitor) savePeerInfo(peerInfo *peers.PeerInfo) error {
        xPub := &chainkd.XPub{}
-       if err := xPub.UnmarshalText([]peerInfo.ID()); err != nil {
+       if err := xPub.UnmarshalText([]byte(peerInfo.ID)); err != nil {
                return err
        }
 
        ormNode := &orm.Node{}
-       if err := m.db.Model(&orm.Node{}).Where(&orm.Node{PublicKey: xPub.PublicKey.String()}).
+       if err := m.db.Model(&orm.Node{}).Where(&orm.Node{PublicKey: xPub.PublicKey().String()}).
                UpdateColumn(&orm.Node{
+                       Alias:      peerInfo.Moniker,
+                       Xpub:       peerInfo.ID,
                        BestHeight: peerInfo.Height,
                        // LatestDailyUptimeMinutes uint64
                }).First(ormNode).Error; err != nil {