public async Task <Response> SendAsync(Request request, ServerConfig server) { Socket socket = null; Response response = null; await Policy.ExecuteAsync(async() => { try { Trace.WriteLine("Connecting to the server socket"); socket = new Socket(SocketType.Stream, ProtocolType.IP); await socket.ConnectAsync(server.EndPoint).ConfigureAwait(false); Trace.WriteLine("Sending request"); await SendAsync(request, socket).ConfigureAwait(false); Trace.WriteLine("Waiting for response"); response = await ReceiveAndDeserializeAsync(socket).ConfigureAwait(false); } catch (Exception ex) { throw new KronosCommunicationException($"Connection to the {server.EndPoint} has been refused", ex); } finally { if (!_stream.IsClean) { _stream.Clean(); } socket?.Dispose(); } }).ConfigureAwait(false); return(response); }
public void IsClean_IsTrue_WhenDataIsWrittenAndStreamIsClean() { // Arrange var stream = new BufferedStream(); byte[] data = new byte[1024]; stream.Write(data, 0, data.Length); stream.Clean(); // Act bool isClean = stream.IsClean; // Assert Assert.True(isClean); }
public void Clean_ResetsPositions() { // Arrange var stream = new BufferedStream(); int length = (int)stream.Length; int position = (int)stream.Position; byte[] data = new byte[1024]; stream.Write(data, 0, data.Length); // Act stream.Clean(); // Assert Assert.Equal(stream.Position, position); Assert.Equal(stream.Length, length); }