private async Task UploadFiles()

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})");
    }