private void ProcessAcceptedConnection(ISocket acceptedConnection) { using (var sourceStream = acceptedConnection.GetStream()) { var dialogServer = new ProtocolDialogServer(sourceStream); var dialogData = dialogServer.AcceptDialog(); Log.Information($"Received event {dialogData.FileAction} for file {dialogData.RelativeFilePath}."); var constructor = _fileStrategies[dialogData.FileAction]; IFileReceiverStrategy currentStrategy = constructor(dialogServer); currentStrategy.ProcessRequest(); } }
public void NotifyClient_ActionIsNotNeeded_ShouldSendCorrectFlagToStream() { // Arrange byte[] buffer = new byte[1]; var stream = new MemoryStream(buffer); // Act var dialog = new ProtocolDialogServer(stream); dialog.NotifyClient(false); // Assert Assert.Equal(0, buffer[0]); }
public void ReadValue_DataIsEqualToSize_ShouldProperlyReturnValue() { // Arrange byte[] buffer = { 1, 2, 3, 4, 5 }; var stream = new MemoryStream(buffer); // Act var dialog = new ProtocolDialogServer(stream); var value = dialog.ReadValue(5, data => data); // Assert Assert.Equal(5, value.Length); Assert.Equal(buffer, value); Assert.True(dialog.HasData()); }
public void AcceptDialog_ShouldReturnProtocolData() { // Arrange var buffer = GetInitBuffer(); var stream = new MemoryStream(buffer); // Act var dialog = new ProtocolDialogServer(stream); var data = dialog.AcceptDialog(); // Assert Assert.Equal(1, data.Version); Assert.Equal(FileAction.Change, data.FileAction); Assert.Equal(FileType.Unknown, data.FileType); Assert.Equal("file.my", data.RelativeFilePath); }
public void ReadValue_DataIsMoreThanSize_ShouldProperlyReturnValue() { // Arrange byte[] buffer = { 1, 2, 3, 4, 5, 6, 7, 8 }; var stream = new MemoryStream(buffer); // Act var dialog = new ProtocolDialogServer(stream); var firstSegment = dialog.ReadValue(5, data => data); var secondSegment = dialog.ReadValue(5, data => data); // Assert Assert.Equal(5, firstSegment.Length); Assert.Equal(buffer.Take(5), firstSegment); Assert.Equal(3, secondSegment.Length); Assert.Equal(buffer.Skip(5).Take(5), secondSegment); Assert.False(dialog.HasData()); }