Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public async Task ProcessUpload(SharedFileDefinition sharedFileDefinition, int?
_progressState = new UploadProgressState();

// Start upload workers
for (var i = 0; i < 6; i++)
for (var i = 0; i < 2; i++)
{
_ = Task.Run(() => _fileUploadWorker.UploadAvailableSlicesAsync(_fileUploadCoordinator.AvailableSlices, _progressState));
}
Expand All @@ -62,7 +62,7 @@ await Task.Run(() => _fileSlicer.SliceAndEncryptAsync(sharedFileDefinition, _pro
if (_progressState.LastException != null)
{
var source = _localFileToUpload ?? "a stream";
throw new Exception($"An error occured while uploading '{source}' / sharedFileDefinition.Id:{sharedFileDefinition.Id}",
throw new InvalidOperationException($"An error occured while uploading '{source}' / sharedFileDefinition.Id:{sharedFileDefinition.Id}",
_progressState.LastException);
}

Expand Down
21 changes: 11 additions & 10 deletions src/ByteSync.Client/Services/Encryptions/SlicerEncrypter.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using System.IO;
using System.Security.Cryptography;
using System.Threading.Tasks;
using System.Threading;
using ByteSync.Business.Communications.Transfers;
using ByteSync.Common.Business.SharedFiles;
using ByteSync.Interfaces.Controls.Encryptions;
Expand All @@ -22,8 +22,7 @@ public SlicerEncrypter(ICloudSessionConnectionRepository cloudSessionConnectionR
_logger = logger;

BufferSize = 4096;
MaxSliceLength = 64 * 1024 * 1024; // 64 Mo
MaxSliceLength = 4 * 1024 * 1024; // 4 Mo
MaxSliceLength = 1024 * 1024; // 1 Mb
}

public void Initialize(FileInfo fileToEncrypt, SharedFileDefinition sharedFileDefinition)
Expand Down Expand Up @@ -83,7 +82,7 @@ public int MaxSliceLength

public async Task<FileUploaderSlice?> SliceAndEncrypt()
{
CryptoStream? cryptoSteam = null;
CryptoStream? cryptoStream = null;
FileUploaderSlice? fileUploaderSlice = null;

var bytes = InReader.ReadBytes(BufferSize);
Expand All @@ -93,19 +92,19 @@ public int MaxSliceLength
var canContinue = TotalGeneratedFiles == 0 || readBytes > 0;
while (canContinue)
{
if (cryptoSteam == null)
if (cryptoStream == null)
{
TotalGeneratedFiles += 1;

var memoryStream = new MemoryStream();
var encryptor = Aes.CreateEncryptor(Aes.Key, Aes.IV);
cryptoSteam = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write, true);
cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write, true);

fileUploaderSlice = new FileUploaderSlice(TotalGeneratedFiles, memoryStream);
}

await cryptoSteam.WriteAsync(bytes, 0, readBytes);

await cryptoStream.WriteAsync(bytes.AsMemory(0, readBytes), CancellationToken.None);
var sizeToRead = BufferSize;
if (thisSessionReadBytes + sizeToRead > MaxSliceLength)
{
Expand All @@ -129,7 +128,7 @@ public int MaxSliceLength
}
}

cryptoSteam?.Dispose();
cryptoStream?.Dispose();

return fileUploaderSlice;
}
Expand All @@ -139,5 +138,7 @@ public void Dispose()
InStream?.Dispose();
InReader?.Dispose();
Aes?.Dispose();

GC.SuppressFinalize(this);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,17 @@ namespace ByteSync.Tests.Services.Communications.Transfers.Uploading;
[TestFixture]
public class FileUploadProcessorTests
{
private Mock<ISlicerEncrypter> _mockSlicerEncrypter;
private Mock<ILogger> _mockLogger;
private Mock<IFileUploadCoordinator> _mockFileUploadCoordinator;
private Mock<IFileSlicer> _mockFileSlicer;
private Mock<IFileUploadWorker> _mockFileUploadWorker;
private Mock<IFilePartUploadAsserter> _mockFilePartUploadAsserter;
private SharedFileDefinition _sharedFileDefinition;
private string _testFilePath;
private MemoryStream _testMemoryStream;
private FileUploadProcessor _fileUploadProcessor;
private SemaphoreSlim _semaphoreSlim;
private Mock<ISlicerEncrypter> _mockSlicerEncrypter = null!;
private Mock<ILogger> _mockLogger = null!;
private Mock<IFileUploadCoordinator> _mockFileUploadCoordinator = null!;
private Mock<IFileSlicer> _mockFileSlicer = null!;
private Mock<IFileUploadWorker> _mockFileUploadWorker = null!;
private Mock<IFilePartUploadAsserter> _mockFilePartUploadAsserter = null!;
private SharedFileDefinition _sharedFileDefinition = null!;
private string _testFilePath = null!;
private MemoryStream _testMemoryStream = null!;
private FileUploadProcessor _fileUploadProcessor = null!;
private SemaphoreSlim _semaphoreSlim = null!;

[SetUp]
public void SetUp()
Expand Down Expand Up @@ -116,7 +116,7 @@ public async Task ProcessUpload_ShouldStartUploadWorkers()
await _fileUploadProcessor.ProcessUpload(_sharedFileDefinition);

// Assert
_mockFileUploadWorker.Verify(x => x.UploadAvailableSlicesAsync(It.IsAny<Channel<FileUploaderSlice>>(), It.IsAny<UploadProgressState>()), Times.Exactly(6));
_mockFileUploadWorker.Verify(x => x.UploadAvailableSlicesAsync(It.IsAny<Channel<FileUploaderSlice>>(), It.IsAny<UploadProgressState>()), Times.Exactly(2));
}

[Test]
Expand Down
Loading