private record QueuedRowItem()

in code/KustoCopyConsole/Storage/RowItemGateway.cs [18:49]


        private record QueuedRowItem(
            DateTime EnqueueTime,
            byte[] Buffer,
            RowItemInMemoryCache? SnapshotCache,
            TaskCompletionSource? TaskSource);
        #endregion

        private const long MAX_VOLUME_BEFORE_SNAPSHOT = 20000000;
        private static readonly TimeSpan MIN_WAIT_PERIOD = TimeSpan.FromSeconds(1);
        private static readonly TimeSpan FLUSH_PERIOD = TimeSpan.FromSeconds(5);

        private static readonly RowItemSerializer _rowItemSerializer = CreateRowItemSerializer();

        private readonly LogStorage _logStorage;
        private readonly ConcurrentQueue<QueuedRowItem> _rowItemQueue = new();
        private readonly ConcurrentQueue<Task> _releaseSourceTaskQueue = new();
        private readonly Task _backgroundTask;
        private readonly TaskCompletionSource _backgroundCompletedSource = new();
        private readonly object _lock = new object();
        private long _volumeSinceLastSnapshot = 0;
        private volatile RowItemInMemoryCache _inMemoryCache;

        #region Construction
        private RowItemGateway(
            LogStorage logStorage,
            RowItemInMemoryCache cache,
            CancellationToken ct)
        {
            _logStorage = logStorage;
            _backgroundTask = Task.Run(() => BackgroundPersistanceAsync(ct));
            _inMemoryCache = cache;
        }