private async Task ProcessBatches()

in RobotOrchestrator.OrderProducer/BatchJob.cs [121:138]


        private async Task ProcessBatches(Action<int> handler, CancellationToken cancellationToken)
        {
            var itemsLeft = MaxItems;

            while (!cancellationToken.IsCancellationRequested && (itemsLeft > 0 || itemsLeft == -1))
            {
                var batchSize = BatchSize;
                
                if (MaxItems != -1)
                {
                    batchSize = Math.Min(itemsLeft, BatchSize);
                    itemsLeft -= batchSize;
                }

                handler?.Invoke(batchSize);
                await Task.Delay(DelayInSecs * 1000);
            }
        }