kaspad/rpc/handle_get_connected_peer_info.go

28 lines
1.0 KiB
Go

package rpc
import (
"github.com/kaspanet/kaspad/rpc/model"
)
// handleGetConnectedPeerInfo implements the getConnectedPeerInfo command.
func handleGetConnectedPeerInfo(s *Server, cmd interface{}, closeChan <-chan struct{}) (interface{}, error) {
peers := s.protocolManager.Peers()
infos := make([]*model.GetConnectedPeerInfoResult, 0, len(peers))
for _, peer := range peers {
info := &model.GetConnectedPeerInfoResult{
ID: peer.ID().String(),
Address: peer.Address(),
LastPingDuration: peer.LastPingDuration().Milliseconds(),
SelectedTipHash: peer.SelectedTipHash().String(),
IsSyncNode: peer == s.protocolManager.IBDPeer(),
IsOutbound: peer.IsOutbound(),
TimeOffset: peer.TimeOffset().Milliseconds(),
UserAgent: peer.UserAgent(),
AdvertisedProtocolVersion: peer.AdvertisedProtocolVersion(),
TimeConnected: peer.TimeConnected().Milliseconds(),
}
infos = append(infos, info)
}
return infos, nil
}