public PeerServices(ulong messageTag, ulong livenessMessageTag, string networkName, string networkProtocolName, int listeningBufferSize, ILoggerFactory loggerFactory, IExternalAccessDiscoverer discoverer, SocketFactory socketFactory, int inactivityTimeoutInMinutes, int maxConcurrentConnections) { if (messageTag == livenessMessageTag) { throw new ArgumentException($"{nameof(livenessMessageTag)} (value: {livenessMessageTag}) must be different from {nameof(messageTag)} (value: {messageTag})! "); } MessageTag = messageTag; LivenessMessageTag = livenessMessageTag; NetworkName = networkName.Required(nameof(networkName)); NetworkProtocolName = networkProtocolName.Required(nameof(networkProtocolName)); ListeningBufferSize = Math.Max(512, listeningBufferSize); InactivityTimeoutInMinutes = Math.Max(inactivityTimeoutInMinutes, 0); _loggerFactory = loggerFactory.Required(nameof(loggerFactory)); _discoverer = discoverer.Required(nameof(discoverer)); _socketFactory = socketFactory.Required(nameof(socketFactory)); _knownNodes = new ConcurrentDictionary <string, (string address, int port, bool retain)>(); _clients = new ConcurrentDictionary <string, IConnection>(); _logger = LoggerNamed(nameof(PeerServices)); MaxConcurrentConnections = Math.Max(maxConcurrentConnections, 0); }
public TestListenerForPeer(TestSocket testSocket, INodeSink nodeSink, IExternalAccessDiscoverer discoverer, CancellationTokenSource source, ILogger logger) : base(nodeSink, discoverer, source, logger) => _testSocket = new SingleUseSocket(testSocket, _source);
public ListenerForPeer(INodeSink nodeSink, IExternalAccessDiscoverer discoverer, CancellationTokenSource source, ILogger logger) : base(nodeSink.NodeId, nodeSink, source, logger) => (_nodeSink, _socket, _route) = DetermineExternalAccess(nodeSink.Required(nameof(nodeSink)), discoverer.Required(nameof(discoverer)));