<PackageReference Include="Relativity.Transfer.Client" Version="7.2.26" />

TransferHelper

static class TransferHelper
using System; using System.IO; namespace Relativity.Transfer { internal static class TransferHelper { private const string RelativityTransferFolder = "Relativity-Transfer"; public static double CalculateFileLevelProgress(long totalSourcePaths, long totalTransferredFiles, long totalFailedFiles) { if (totalTransferredFiles <= 0 || totalSourcePaths <= 0) return 0; return Math.Min(((double)totalTransferredFiles + (double)totalFailedFiles) / (double)totalSourcePaths * 100, 100); } public static double CalculateByteLevelProgress(long totalSourceBytes, long totalTransferredBytes) { if (totalTransferredBytes <= 0 || totalSourceBytes <= 0) return 0; return Math.Min((double)totalTransferredBytes / (double)totalSourceBytes * 100, 100); } public static double CalculateTransferRateMbps(long totalTransferredBytes, double totalSeconds) { if (!(totalSeconds <= 0)) { double num = (double)totalTransferredBytes * 8 / 1048576; return num / totalSeconds; } return 0; } public static string CreateAppDataRootDirectory() { string text = Path.Combine(Path.GetTempPath(), "Relativity-Transfer"); if (!Directory.Exists(text)) Directory.CreateDirectory(text); return text; } public static string CreateTransferLogDirectory(ITransferLog log, IFileSystemService fileSystemService, string transferLogDirectory, string logFolder) { try { transferLogDirectory = Environment.ExpandEnvironmentVariables(transferLogDirectory); if (string.IsNullOrWhiteSpace(transferLogDirectory)) transferLogDirectory = CreateAppDataRootDirectory(); transferLogDirectory = fileSystemService.Combine(transferLogDirectory, logFolder); if (!string.IsNullOrEmpty(transferLogDirectory) && !fileSystemService.DirectoryExists(transferLogDirectory)) fileSystemService.CreateDirectory(transferLogDirectory); return transferLogDirectory; } catch (Exception exception) { if (ExceptionHelper.IsFatalException(exception)) throw; log.LogError(exception, "Failed to create the transfer log directory.", Array.Empty<object>()); return string.Empty; } } public static int CalculateTotalChunks(long totalRequestBytes, long chunkSize) { if (totalRequestBytes != 0 && chunkSize != 0) { long val = Convert.ToInt64(Math.Ceiling((double)totalRequestBytes / (double)chunkSize)); return Convert.ToInt32(Math.Min(val, 2147483647)); } return 1; } } }