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

EnumerationOrchestrator

using Relativity.DataTransfer.Nodes; using Relativity.Transfer.Enumeration.Interfaces; using System.Collections.Generic; using System.Threading; namespace Relativity.Transfer.Enumeration { public class EnumerationOrchestrator : IEnumerationOrchestrator { private readonly IEnumeratorProvider _enumeratorProvider; private readonly IEnumerable<INode> _sourceNodes; internal EnumerationOrchestrator(IEnumeratorProvider enumeratorProvider, IEnumerable<INode> sourceNodes) { Assertions.RequireNonNull(sourceNodes, "sourceNodes"); _enumeratorProvider = enumeratorProvider; _sourceNodes = sourceNodes; } public IEnumerable<INode> LazyEnumerate(CancellationToken token) { IEnumerator<INode> enumerator = null; try { enumerator = _enumeratorProvider.GetEnumerator(_sourceNodes, token); while (enumerator.MoveNext()) { yield return enumerator.Current; } } finally { enumerator?.Dispose(); } } public void ExecuteEnumerate(CancellationToken token) { foreach (INode item in LazyEnumerate(token)) { INode node = item; } } } }