<PackageReference Include="Relativity.Server.Transfer.SDK" Version="24000.0.1" />

TargetRateThrottler

using Relativity.Transfer.InstanceSettings; using Relativity.Transfer.Resources; using System; using System.Globalization; using System.Threading; namespace Relativity.Transfer.Validator { internal class TargetRateThrottler : ITargetRateThrottler { private readonly IInstanceSettingsConfigurationService instanceSettingsConfigurationService; private readonly ITransferLog logger; public TargetRateThrottler(IInstanceSettingsConfigurationService instanceSettingsConfigurationService, ITransferLog log) { this.instanceSettingsConfigurationService = instanceSettingsConfigurationService; logger = log; } public void ThrottleToMaxAllowedValue(ClientConfiguration configuration) { if (configuration == null) throw new ArgumentNullException("configuration"); configuration.TargetDataRateMbps = ThrottleToMaxAllowedValue(configuration.TargetDataRateMbps); } public int ThrottleToMaxAllowedValue(int targetRateMbps) { uint? result = instanceSettingsConfigurationService.GetMaxAllowedTargetDataRateMbpsAsync(CancellationToken.None).Result; if (result.HasValue) { long num = targetRateMbps; long? nullable = result; if ((num > nullable.GetValueOrDefault()) & nullable.HasValue) { string messageTemplate = string.Format(CultureInfo.CurrentCulture, CoreStrings.TargetDataRateOverMaxAllowedValueExceptionMessage, result); logger.LogWarning(messageTemplate, Array.Empty<object>()); return (int)result.Value; } } return targetRateMbps; } } }