public void TestPeerListenerCreation()
        {
            var fakeLogger     = new FakeLogging();
            var socketFactory  = new SocketFactory(fakeLogger, 10);
            var fakeDiscoverer = new FakeDiscoverer();
            var source         = new CancellationTokenSource();

            using IPeerServices peerServices = new PeerServices(_messageTag, 0, "UnitTest", "unit", 4096, fakeLogger, fakeDiscoverer, socketFactory, 10, 40);
            peerServices.WithCancellationTokenSource(source);
            Assert.IsNotNull(peerServices);
            Assert.IsNull(fakeLogger.LastLog);
            INodeSink fakeNodeSink = new FakeNodeSink(_messageTag, 2002, 10, 40);

            using var peerListener = peerServices.CreateListenerFor(fakeNodeSink);
            Assert.IsNotNull(peerListener);
            Assert.IsNull(fakeLogger.LastLog);
        }
        public void TestProxyListenerCreation()
        {
            var fakeLogger     = new FakeLogging();
            var socketFactory  = new SocketFactory(fakeLogger, 10);
            var fakeDiscoverer = new FakeDiscoverer();
            var source         = new CancellationTokenSource();

            using IPeerServices peerServices = new PeerServices(_messageTag, 0, "UnitTest", "unit", 4096, fakeLogger, fakeDiscoverer, socketFactory, 10, 40);
            peerServices.WithCancellationTokenSource(source);
            Assert.IsNotNull(peerServices);
            Assert.IsNull(fakeLogger.LastLog);
            INodeSink   fakeNodeSink = new FakeNodeSink(_messageTag, 8002, 10, 40);
            IConnection connection   = new ConnectionToPeer("Test", fakeNodeSink, "localhost", 8003, source, fakeLogger);

            using var peerListener = peerServices.ProxyingServices.CreateListenerForProxying("rafael.interlockledger.network", "localhost", 9000, connection);
            Assert.IsNotNull(peerListener);
            Assert.IsNull(fakeLogger.LastLog);
            Assert.AreEqual("rafael.interlockledger.network", peerListener.ExternalAddress);
        }
 public TestListenerForProxying(TestSocket overridingSocket, string externalAddress, string hostedAddress, ushort firstPort, ConnectionInitiatedByPeer connection, SocketFactory socketFactory, CancellationTokenSource source, ILogger logger) :
     base(externalAddress, hostedAddress, firstPort, connection, socketFactory, source, logger)
     => _testSocket = new SingleUseSocket(overridingSocket, _source);
 public ListenerForProxying(string externalAddress, string hostedAddress, ushort firstPort, IConnection connection, SocketFactory socketFactory, CancellationTokenSource source, ILogger logger)
     : base(connection.Id, connection, CreateKindOfLinkedSource(source), logger)
 {
     ExternalAddress = externalAddress.Required(nameof(externalAddress));
     Connection      = connection.Required(nameof(connection));
     _socket         = socketFactory.GetSocket(hostedAddress, firstPort);
     if (_socket is null)
     {
         throw new InterlockLedgerIOException($"Could not open a listening socket for proxying at {hostedAddress}:{firstPort}");
     }
     ExternalPortNumber = (ushort)((IPEndPoint)_socket.LocalEndPoint).Port;
     HostedAddress      = hostedAddress;
     _channelMap        = new ConcurrentDictionary <string, ChannelPairing>();
     Sinked             = LogSinked;
     Responded          = LogResponded;
     Errored            = LogError;
 }
 public DummyExternalAccessDiscoverer(SocketFactory socketFactory, ILoggerFactory loggerFactory)
 {
     _socketFactory = socketFactory.Required(nameof(socketFactory));
     _logger        = loggerFactory.NewLogger <DummyExternalAccessDiscoverer>();
 }