private static async Task RunClient( TestConnectionConfig clientConfig, Action serverCanDisconnect ) { var config = new TestNetworkConfig(new TestNetworkConfigData() { Connection = clientConfig }); var nwConfig = config.CreateNetworkStreamFactoryConfiguration( Encoding.UTF8, () => TaskUtils.False, null, null, null, null, null ); (var socket, var stream) = await NetworkStreamFactory.AcquireNetworkStreamFromConfiguration(nwConfig.Item1, default); Assert.IsNotNull(socket, "Socket must not be null."); Assert.IsTrue(socket.Connected, "Socket must be connected."); stream.DisposeSafely(); serverCanDisconnect(); }
private static async Task TestWithServer( EndPoint serverEP, ProtocolType protocolType, TestConnectionConfig clientConfig ) { var serverCanDisconnect = 0; await Task.WhenAll( RunServer( serverEP, protocolType, () => serverCanDisconnect != 0 ), RunClient( clientConfig, () => Interlocked.Exchange(ref serverCanDisconnect, 1)) ); }