Example #1
0
        private void ProcessChunk()
        {
            try
            {
                foreach (var jobBatchItem in jobQueue.GetConsumingEnumerable())
                {
                    if (cancellationToken.IsCancellationRequested)
                    {
                        break;
                    }

                    var processed = new ProcessedBatchItem
                    {
                        JobBatchItemId = jobBatchItem.JobBatchItemId,
                        Processed      = byteProcessor.Process(jobBatchItem.Memory)
                    };
                    jobBatchItem.ReleaseBuffer();

                    if (!cancellationToken.IsCancellationRequested)
                    {
                        outputBuffer.SubmitProcessedBatchItem(processed);
                    }
                }
            }
            catch (Exception e)
            {
                jobContext.Failure(e, e.Message);
                cancellationTokenSource.Cancel();
            }
            finally
            {
                countdown.Signal();
            }

            outputBuffer.SubmitCompleted();
        }