public async Task ValidateReadWriteStatistics() { InterceptData clientData = null, serverData = null; var server = new WsServer(); await server.StartAsync(new IPEndPoint(IPAddress.Loopback, 0), async stream => { await stream.WrapSocketAsync(x => Task.FromResult <WStreamSocket>(new Interceptor(x, out serverData)) ); var abr = new AsyncBinaryReader(stream); for (int i = 0; i < 100000; i++) { Assert.Equal(i, await abr.ReadInt32Async()); } await stream.CloseAsync(); }); var client = new WsClient(); var connection = await client.ConnectAsync(new Uri("ws://" + server.ListeningAddresses[0].Substring(7))); await connection.WrapSocketAsync(x => Task.FromResult <WStreamSocket>(new Interceptor(x, out clientData)) ); var abw = new AsyncBinaryWriter(connection); for (int i = 0; i < 100000; i++) { await abw.WriteAsync(i); } await abw.FlushAsync(); await Task.Delay(1000); Assert.Equal(4 * 100000, clientData.BytesWritten); Assert.Equal(4 * 100000, serverData.BytesRead); client.Dispose(); server.Dispose(); }
public Interceptor(WStreamSocket socket, out InterceptData data) : base(socket) { _data = new InterceptData(); data = _data; }