in Core/src/Impl/Commands/UploadCommand.cs [220:239]
private async Task UploadFiles(IStorage srcStorage, List<(SymbolStoragePath src, SymbolStoragePath dst)> uploadFiles)
{
if (uploadFiles.Count <= 0)
return;
myLogger.Info($"[{DateTime.Now:s}] Uploading...");
long totalSize = 0;
await uploadFiles.ParallelForAsync(myDegreeOfParallelism, async item =>
{
var (srcFile, dstFile) = item;
myLogger.Info($" Uploading {srcFile}");
using var memoryStream = new MemoryStream();
await srcStorage.OpenForReadingAsync(srcFile, stream => stream.CopyToAsync(memoryStream));
await myTargetStorage.CreateForWritingAsync(dstFile, TagUtil.IsTagFile(dstFile) ? AccessMode.Private : AccessMode.Public, memoryStream);
Interlocked.Add(ref totalSize, memoryStream.Length);
});
await myTargetStorage.InvalidateExternalServicesAsync();
myLogger.Info($"[{DateTime.Now:s}] Done with uploading (size: {totalSize.ToKibibyte()}, files: {uploadFiles.Count})");
}