code/KustoCopyConsole/Entity/InMemory/ActivityCache.cs (32 lines of code) (raw):

using KustoCopyConsole.Entity.RowItems; using System.Collections.Immutable; namespace KustoCopyConsole.Entity.InMemory { internal class ActivityCache : CacheBase<ActivityRowItem> { public ActivityCache( ActivityRowItem item, IImmutableDictionary<long, IterationCache> iterationMap) : base(item) { IterationMap = iterationMap; } public ActivityCache(ActivityRowItem item) : this(item, ImmutableDictionary<long, IterationCache>.Empty) { } public IImmutableDictionary<long, IterationCache> IterationMap { get; } public ActivityCache CleanOnRestart() { var newIterationMap = IterationMap.Values .Select(i => i.CleanOnRestart()) .ToImmutableDictionary(i => i.RowItem.IterationId); return new ActivityCache(RowItem, newIterationMap); } public ActivityCache AppendIteration(IterationCache iteration) { var iterationId = iteration.RowItem.IterationId; return new ActivityCache(RowItem, IterationMap.SetItem(iterationId, iteration)); } } }