<PackageReference Include="Relativity.Server.Import.SDK" Version="2.9.2" />

ProgressHandler

public abstract class ProgressHandler : IProgressHandler
using Relativity.DataExchange.Logger; using Relativity.DataExchange.Transfer; using Relativity.Logging; using System; namespace Relativity.DataExchange.Export.VolumeManagerV2.Statistics { public abstract class ProgressHandler : IProgressHandler { private readonly ILog _logger; protected IDownloadProgressManager DownloadProgressManager { get; } protected ProgressHandler(IDownloadProgressManager downloadProgressManager, ILog logger) { DownloadProgressManager = downloadProgressManager.ThrowIfNull("downloadProgressManager"); _logger = logger.ThrowIfNull<ILog>("logger"); } public void Subscribe(ITapiBridge tapiBridge) { tapiBridge.ThrowIfNull("tapiBridge"); _logger.LogVerbose("Attached tapi bridge {TapiBridgeInstanceId} to the progress handler.", new object[1] { tapiBridge.InstanceId }); tapiBridge.TapiProgress += OnFileProgress; } public void Unsubscribe(ITapiBridge tapiBridge) { tapiBridge.ThrowIfNull("tapiBridge"); _logger.LogVerbose("Detached tapi bridge {TapiBridgeInstanceId} from the progress handler.", new object[1] { tapiBridge.InstanceId }); tapiBridge.TapiProgress -= OnFileProgress; } protected abstract void MarkAsTransferCompleted(string targetFile, int lineNumber, bool transferResult); private void OnFileProgress(object sender, TapiProgressEventArgs e) { _logger.LogVerbose("Tapi progress event for {FileName} with status {Successful} ({LineNumber}).", new object[3] { e.FileName.Secure(), e.Successful, e.LineNumber }); if (e.Completed) try { MarkAsTransferCompleted(e.TargetFile, e.LineNumber, e.Successful); } catch (Exception ex) { _logger.LogError(ex, "Error while handling Tapi progress event for {FileName} with status {Successful} ({LineNumber})", new object[3] { e.FileName.Secure(), e.Successful, e.LineNumber }); } } } }