public ConnectionManager( IDateTimeProvider dateTimeProvider, ILoggerFactory loggerFactory, Network network, INetworkPeerFactory networkPeerFactory, NodeSettings nodeSettings, INodeLifetime nodeLifetime, NetworkPeerConnectionParameters parameters, IPeerAddressManager peerAddressManager, IEnumerable <IPeerConnector> peerConnectors, IPeerDiscovery peerDiscovery, ConnectionManagerSettings connectionSettings) { this.connectedPeers = new NetworkPeerCollection(); this.dateTimeProvider = dateTimeProvider; this.loggerFactory = loggerFactory; this.logger = loggerFactory.CreateLogger(this.GetType().FullName); this.Network = network; this.NetworkPeerFactory = networkPeerFactory; this.NodeSettings = nodeSettings; this.nodeLifetime = nodeLifetime; this.peerAddressManager = peerAddressManager; this.PeerConnectors = peerConnectors; this.peerDiscovery = peerDiscovery; this.ConnectionSettings = connectionSettings; this.Servers = new List <NetworkPeerServer>(); this.Parameters = parameters; this.Parameters.ConnectCancellation = this.nodeLifetime.ApplicationStopping; this.Parameters.UserAgent = $"{this.NodeSettings.Agent}:{this.GetVersion()}"; this.Parameters.Version = this.NodeSettings.ProtocolVersion; }
public PeerService(IUdpServerEventLoopGroupFactory udpServerEventLoopGroupFactory, IUdpServerChannelFactory serverChannelFactory, IPeerDiscovery peerDiscovery, IEnumerable <IP2PMessageObserver> messageHandlers, IPeerSettings peerSettings, ILogger logger, IHealthChecker healthChecker) : base(serverChannelFactory, logger, udpServerEventLoopGroupFactory) { _messageHandlers = messageHandlers; _peerSettings = peerSettings; _healthChecker = healthChecker; Discovery = peerDiscovery; }
public ConnectionManager(IDateTimeProvider dateTimeProvider, ILoggerFactory loggerFactory, Network network, INetworkPeerFactory networkPeerFactory, NodeSettings nodeSettings, INodeLifetime nodeLifetime, NetworkPeerConnectionParameters parameters, IPeerAddressManager peerAddressManager, IEnumerable <IPeerConnector> peerConnectors, IPeerDiscovery peerDiscovery, ISelfEndpointTracker selfEndpointTracker, ConnectionManagerSettings connectionSettings, IVersionProvider versionProvider, INodeStats nodeStats, IAsyncProvider asyncProvider) { this.connectedPeers = new NetworkPeerCollection(); this.dateTimeProvider = dateTimeProvider; this.loggerFactory = loggerFactory; this.logger = loggerFactory.CreateLogger(GetType().FullName); this.Network = network; this.NetworkPeerFactory = networkPeerFactory; this.NodeSettings = nodeSettings; this.nodeLifetime = nodeLifetime; this.asyncProvider = asyncProvider; this.peerAddressManager = peerAddressManager; this.PeerConnectors = peerConnectors; this.peerDiscovery = peerDiscovery; this.ConnectionSettings = connectionSettings; this.networkPeerDisposer = new NetworkPeerDisposer(this.loggerFactory, this.asyncProvider); this.Servers = new List <NetworkPeerServer>(); this.Parameters = parameters; this.Parameters.ConnectCancellation = this.nodeLifetime.ApplicationStopping; this.selfEndpointTracker = selfEndpointTracker; this.versionProvider = versionProvider; this.ipRangeFilteringEndpointExclusions = new List <IPEndPoint>(); this.connectedPeersQueue = asyncProvider.CreateAndRunAsyncDelegateDequeuer <INetworkPeer>( $"{nameof(ConnectionManager)}-{nameof(this.connectedPeersQueue)}", OnPeerAdded); this.disconnectedPerfCounter = new PerformanceCounter(); this.Parameters.UserAgent = $"{this.ConnectionSettings.Agent}:{versionProvider.GetVersion()} ({(int) this.NodeSettings.ProtocolVersion})"; this.Parameters.Version = this.NodeSettings.ProtocolVersion; nodeStats.RegisterStats(AddComponentStats, StatsType.Component, GetType().Name, 1100); }
public PeerServiceTests(ITestOutputHelper output) : base(output) { _pid = PeerIdHelper.GetPeerId("im_a_key"); _guid = CorrelationId.GenerateCorrelationId(); _logger = Substitute.For <ILogger>(); _serverChannel = new EmbeddedObservableChannel($"Server:{CurrentTestName}"); _udpServerServerChannelFactory = Substitute.For <IUdpServerChannelFactory>(); _peerSettings = Substitute.For <IPeerSettings>(); _peerSettings.BindAddress.Returns(IPAddress.Parse("127.0.0.1")); _peerSettings.Port.Returns(1234); _udpServerServerChannelFactory.BuildChannel(Arg.Any <IEventLoopGroupFactory>(), _peerSettings.BindAddress, _peerSettings.Port).Returns(_serverChannel); _peerDiscovery = Substitute.For <IPeerDiscovery>(); _p2PMessageHandlers = new List <IP2PMessageObserver>(); }
public ConnectionManager(IDateTimeProvider dateTimeProvider, ILoggerFactory loggerFactory, Network network, INetworkPeerFactory networkPeerFactory, NodeSettings nodeSettings, INodeLifetime nodeLifetime, NetworkPeerConnectionParameters parameters, IPeerAddressManager peerAddressManager, IEnumerable <IPeerConnector> peerConnectors, IPeerDiscovery peerDiscovery, ISelfEndpointTracker selfEndpointTracker, ConnectionManagerSettings connectionSettings, IVersionProvider versionProvider, INodeStats nodeStats) { this.connectedPeers = new NetworkPeerCollection(); this.dateTimeProvider = dateTimeProvider; this.loggerFactory = loggerFactory; this.logger = loggerFactory.CreateLogger("Impleum.Bitcoin.FullNode"); this.Network = network; this.NetworkPeerFactory = networkPeerFactory; this.NodeSettings = nodeSettings; this.nodeLifetime = nodeLifetime; this.peerAddressManager = peerAddressManager; this.PeerConnectors = peerConnectors; this.peerDiscovery = peerDiscovery; this.ConnectionSettings = connectionSettings; this.networkPeerDisposer = new NetworkPeerDisposer(this.loggerFactory); this.Servers = new List <NetworkPeerServer>(); this.Parameters = parameters; this.Parameters.ConnectCancellation = this.nodeLifetime.ApplicationStopping; this.selfEndpointTracker = selfEndpointTracker; this.versionProvider = versionProvider; this.connectedPeersQueue = new AsyncQueue <INetworkPeer>(this.OnPeerAdded); this.disconnectedPerfCounter = new PerformanceCounter(); this.Parameters.UserAgent = $"{this.ConnectionSettings.Agent}:{versionProvider.GetVersion()} ({(int)this.NodeSettings.ProtocolVersion})"; this.Parameters.Version = this.NodeSettings.ProtocolVersion; nodeStats.RegisterStats(this.AddComponentStats, StatsType.Component, 1100); }
public ConnectionManager(IDateTimeProvider dateTimeProvider, ILoggerFactory loggerFactory, Network network, INetworkPeerFactory networkPeerFactory, NodeSettings nodeSettings, INodeLifetime nodeLifetime, NetworkPeerConnectionParameters parameters, IPeerAddressManager peerAddressManager, IEnumerable <IPeerConnector> peerConnectors, IPeerDiscovery peerDiscovery, ISelfEndpointTracker selfEndpointTracker, ConnectionManagerSettings connectionSettings, IVersionProvider versionProvider) { this.connectedPeers = new NetworkPeerCollection(); this.dateTimeProvider = dateTimeProvider; this.loggerFactory = loggerFactory; this.logger = loggerFactory.CreateLogger(this.GetType().FullName); this.Network = network; this.NetworkPeerFactory = networkPeerFactory; this.NodeSettings = nodeSettings; this.nodeLifetime = nodeLifetime; this.peerAddressManager = peerAddressManager; this.PeerConnectors = peerConnectors; this.peerDiscovery = peerDiscovery; this.ConnectionSettings = connectionSettings; this.networkPeerDisposer = new NetworkPeerDisposer(this.loggerFactory); this.Servers = new List <NetworkPeerServer>(); this.Parameters = parameters; this.Parameters.ConnectCancellation = this.nodeLifetime.ApplicationStopping; this.selfEndpointTracker = selfEndpointTracker; this.versionProvider = versionProvider; this.Parameters.UserAgent = $"{this.NodeSettings.Agent}:{versionProvider.GetVersion()}"; this.Parameters.Version = this.NodeSettings.ProtocolVersion; this.downloads = new Dictionary <INetworkPeer, PerformanceSnapshot>(); }
/// <summary> /// Add addresses from a discovery source to the list of potential peers to connect to. /// </summary> public void AddPeerDiscovery(IPeerDiscovery peerDiscovery) { _peerDiscoverers.Add(peerDiscovery); }
void IPeerToUser.RegisterOnServer(EndPointInfo serverInfo) { ((IPeerToUser)this).UnregisterFromServer(); string protocol = null; switch (serverInfo.Protocol) { case Protocol.HTTP: protocol = "http"; break; //case Protocol.IPC: // protocol = "ipc"; // break; case Protocol.TCP: protocol = "tcp"; break; } string url = String.Concat(protocol, "://", serverInfo.Address, ":", serverInfo.Port, "/", serverInfo.Name); peerServer = (IPeerDiscovery)Activator.GetObject( typeof(IPeerDiscovery), url); peerServer.RegistPeer(this); continueThread.Reset(); updateRenewThread = new Thread(new ThreadStart(UpdateRenew)); updateRenewThread.Start(); connectedToServer = true; }