예제 #1
0
        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());
        }