public void SendAndReceiveData([Values(10, 100)] int length) { this.writer.BeginWriting(); Span <byte> writeSpan = this.writer.Reserve(length); Assert.That(writeSpan.Length, Is.EqualTo(length)); for (int i = 0; i < length; i++) { writeSpan[i] = (byte)i; } NetworkWriteResult writeResult = this.writer.EndWriting(this.remoteIpEndPoint); Assert.That(writeResult.SocketError, Is.EqualTo(SocketError.Success)); NetworkReadResult readResult = this.reader.BeginReading(); Assert.That(readResult.SocketError, Is.EqualTo(SocketError.Success)); Assert.That(readResult.IsDisconnected, Is.EqualTo(false)); Assert.That(readResult.RemoteIpEndPoint.Address, Is.EqualTo(this.remoteIpEndPoint.Address)); Assert.That(readResult.RemoteIpEndPoint.Port, Is.Not.EqualTo(this.remoteIpEndPoint.Port)); ReadOnlySpan <byte> readSpan = this.reader.Read(length); this.reader.EndReading(); Assert.That(readSpan.Length, Is.EqualTo(length)); AssertEquals(readSpan, writeSpan); }
public void SendCompleteAndReceiveFragmentedData([Values(2, 10, 100)] int length) { this.writer.BeginWriting(); Span <byte> writeSpan = this.writer.Reserve(100); Assert.That(writeSpan.Length, Is.EqualTo(100)); for (int i = 0; i < length; i++) { writeSpan[i] = (byte)i; } NetworkWriteResult writeResult = this.writer.EndWriting(this.remoteIpEndPoint); Assert.That(writeResult.SocketError, Is.EqualTo(SocketError.Success)); NetworkReadResult readResult = this.reader.BeginReading(); Assert.That(readResult.SocketError, Is.EqualTo(SocketError.Success)); byte[] buffer = new byte[100]; int index = 0; for (int i = 0; i < (100 / length); i++) { this.reader.Read(length).CopyTo(buffer.AsSpan(index, length)); index += length; } this.reader.EndReading(); AssertEquals(buffer.AsSpan(), writeSpan); }
public void ReadAndWriteMultipleFragmentsThreaded(int maxReadLength, int maxReserveLength) { this.reader = new TcpReader(this.readerTcpClient.Client, maxReadLength); this.writer = new TcpWriter(this.writerTcpClient.Client, maxReserveLength); this.writerTcpClient.Client.SendBufferSize = 1; var xdrReader = new XdrReader(this.reader); var xdrWriter = new XdrWriter(this.writer); byte[] value = TestXdr.GenerateByteTestData(17); var task = Task.Run( () => { NetworkReadResult readResult = this.reader.BeginReading(); Assert.That(readResult.SocketError, Is.EqualTo(SocketError.Success)); Assert.That(xdrReader.ReadOpaque(), Is.EqualTo(value)); Assert.That(xdrReader.ReadInt(), Is.EqualTo(42)); this.reader.EndReading(); }); this.writer.BeginWriting(); xdrWriter.WriteVariableLengthOpaque(value); xdrWriter.Write(42); this.writer.EndWriting(null); task.Wait(); }