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

BatchSerializer

using System; using System.Threading.Tasks; namespace Relativity.Transfer { internal class BatchSerializer : IBatchSerializer { private readonly PathEnumeratorContext context; private readonly IPathValidationProvider pathValidator; internal PathSearchStorage Storage { get; } internal BatchSerializer(string batchDirectory, PathEnumeratorContext context, IPathValidationProvider pathValidator, ITransferLog logger) : this(batchDirectory, TransferDirection.Upload, context, pathValidator, logger) { } internal BatchSerializer(string batchDirectory, TransferDirection direction, PathEnumeratorContext context, IPathValidationProvider pathValidator, ITransferLog logger) { if (context == null) throw new ArgumentNullException("context"); if (pathValidator == null) throw new ArgumentNullException("pathValidator"); if (logger == null) throw new ArgumentNullException("logger"); this.pathValidator = pathValidator; this.context = context; Storage = new PathSearchStorage(context, new JsonFileSerializer(), logger) { BatchDirectory = batchDirectory, LocalPaths = (direction == TransferDirection.Upload), StartTime = DateTime.Now }; } public void AddTransferPath(TransferPath path) { PathValidationResult pathValidationResult = pathValidator.Validate(path); Storage.Add(path, pathValidationResult); if (pathValidationResult.IsOk) context.PublishProgress(false, Storage); } public Task<SerializedPathsResult> CreateBatchAsync() { Storage.Save(true); return Task.FromResult(new SerializedPathsResult(context.SearchPaths, Storage.SerializedPaths, Storage.PathErrors, true, DateTime.Now - Storage.StartTime)); } } }