public static List <PeerNodeModel> GetPeerInfo(IConnectionManager connectionManager)
        {
            var peerList = new List <PeerNodeModel>();

            List <INetworkPeer> peers = connectionManager.ConnectedPeers.ToList();

            foreach (INetworkPeer peer in peers)
            {
                if ((peer != null) && (peer.RemoteSocketAddress != null))
                {
                    var peerNode = new PeerNodeModel
                    {
                        Id      = peers.IndexOf(peer),
                        Address = peer.RemoteSocketEndpoint.ToString()
                    };

                    if (peer.PeerVersion != null)
                    {
                        peerNode.LocalAddress   = peer.PeerVersion.AddressReceiver?.ToString();
                        peerNode.Services       = ((ulong)peer.PeerVersion.Services).ToString("X");
                        peerNode.Version        = (uint)peer.PeerVersion.Version;
                        peerNode.SubVersion     = peer.PeerVersion.UserAgent;
                        peerNode.StartingHeight = peer.PeerVersion.StartHeight;
                    }

                    var connectionManagerBehavior = peer.Behavior <IConnectionManagerBehavior>();
                    if (connectionManagerBehavior != null)
                    {
                        peerNode.Inbound       = peer.Inbound;
                        peerNode.IsWhiteListed = connectionManagerBehavior.Whitelisted;
                    }

                    if (peer.TimeOffset != null)
                    {
                        peerNode.TimeOffset = peer.TimeOffset.Value.Seconds;
                    }

                    peerList.Add(peerNode);
                }
            }

            return(peerList);
        }
Esempio n. 2
0
        public List <PeerNodeModel> GetPeerInfo()
        {
            List <PeerNodeModel> peerList = new List <PeerNodeModel>();

            List <Node> nodes = this.ConnectionManager.ConnectedNodes.ToList();

            foreach (Node node in nodes)
            {
                if (node != null && node.RemoteSocketAddress != null)
                {
                    PeerNodeModel peerNode = new PeerNodeModel
                    {
                        Id      = nodes.IndexOf(node),
                        Address = node.RemoteSocketEndpoint.ToString()
                    };

                    if (node.MyVersion != null)
                    {
                        peerNode.LocalAddress   = node.MyVersion.AddressReceiver?.ToString();
                        peerNode.Services       = ((ulong)node.MyVersion.Services).ToString("X");
                        peerNode.Version        = (uint)node.MyVersion.Version;
                        peerNode.SubVersion     = node.MyVersion.UserAgent;
                        peerNode.StartingHeight = node.MyVersion.StartHeight;
                    }

                    ConnectionManagerBehavior connectionManagerBehavior = node.Behavior <ConnectionManagerBehavior>();
                    if (connectionManagerBehavior != null)
                    {
                        peerNode.Inbound       = connectionManagerBehavior.Inbound;
                        peerNode.IsWhiteListed = connectionManagerBehavior.Whitelisted;
                    }

                    if (node.TimeOffset != null)
                    {
                        peerNode.TimeOffset = node.TimeOffset.Value.Seconds;
                    }

                    peerList.Add(peerNode);
                }
            }

            return(peerList);
        }