public ConnectorSession(NetworkPool pool, PeerConnector connector) { int?port; this.connector = connector; this.server = pool.New(); server.Bind(out port); server.Listen(1); endpoint = new IPEndPoint(IPAddress.Loopback, port.Value); }
public void PeerConnector_FindPeerToConnectTo_Returns_DiscoveredPeers() { var peerAddressManager = new PeerAddressManager(); var ipAddressOne = IPAddress.Parse("::ffff:192.168.0.1"); var networkAddressAddNode = new NetworkAddress(ipAddressOne, 80); var ipAddressTwo = IPAddress.Parse("::ffff:192.168.0.2"); var networkAddressDiscoverNode = new NetworkAddress(ipAddressTwo, 80); peerAddressManager.AddPeer(networkAddressAddNode, IPAddress.Loopback, PeerIntroductionType.Add); peerAddressManager.AddPeer(networkAddressDiscoverNode, IPAddress.Loopback, PeerIntroductionType.Discover); var connector = new PeerConnector(peerAddressManager, PeerIntroductionType.Discover); var peer = connector.FindPeerToConnectTo(); Assert.Equal(networkAddressDiscoverNode.Endpoint, peer.Endpoint); }
private IPeerConnector CreatePeerConnector( NodeConnectionParameters parameters, NodeServices requiredServices, Func <IPEndPoint, byte[]> peerSelector, PeerIntroductionType peerIntroductionType, int?maximumNodeConnections = 8) { this.logger.LogTrace("({0}:{1})", nameof(requiredServices), requiredServices); var nodeRequirement = new NodeRequirement { MinVersion = this.NodeSettings.ProtocolVersion, RequiredServices = requiredServices, }; var peerConnector = new PeerConnector(this.Network, this.nodeLifetime, parameters, nodeRequirement, peerSelector, this.asyncLoopFactory, this.peerAddressManager, peerIntroductionType) { MaximumNodeConnections = maximumNodeConnections.Value }; this.logger.LogTrace("(-)"); return(peerConnector); }
private bool ConnectToPeer(PeerAddressManager peerAddressManager, Mock <INetworkPeerFactory> networkPeerFactoryExisting, ConnectionManagerSettings connectionManagerSettingsExisting, PeerConnector peerConnector, IPEndPoint endpointNode, Mock <IConnectionManager> mockConnectionManager) { peerAddressManager.AddPeer(endpointNode, IPAddress.Loopback); var networkPeer = new Mock <INetworkPeer>(); networkPeer.SetupGet(np => np.PeerEndPoint).Returns(new IPEndPoint(endpointNode.Address, endpointNode.Port)); networkPeer.SetupGet(np => np.RemoteSocketAddress).Returns(endpointNode.Address); networkPeer.SetupGet(np => np.RemoteSocketPort).Returns(endpointNode.Port); networkPeer.SetupGet(np => np.State).Returns(NetworkPeerState.HandShaked); networkPeerFactoryExisting.Setup(npf => npf.CreateConnectedNetworkPeerAsync(It.Is <IPEndPoint>(x => Equals(x, endpointNode)), It.IsAny <NetworkPeerConnectionParameters>(), It.IsAny <NetworkPeerDisposer>())).Returns(Task.FromResult(networkPeer.Object)); var connectedPeers = (NetworkPeerCollection)mockConnectionManager.Object.ConnectedPeers; foreach (INetworkPeer peer in peerConnector.ConnectorPeers) { if (!connectedPeers.Contains(peer)) { connectedPeers.Add(peer); } } mockConnectionManager.SetupGet(np => np.ConnectedPeers).Returns(connectedPeers); peerConnector.Initialize(mockConnectionManager.Object); peerConnector.OnConnectAsync().GetAwaiter().GetResult(); return(peerConnector.ConnectorPeers.Select(p => p.PeerEndPoint).Contains(endpointNode)); }