private void ProcessStreamData(Stream networkStream)
 {
     using var enumerator = streamProcessor.GetCompressedWorkItems(networkStream).GetEnumerator();
     while (!streamProcessor.CancelToken.IsCancellationRequested && enumerator.MoveNext())
     {
         var compressedItems = enumerator.Current;
         taskManager.Run(() => ProcessCompressedWorkItem(compressedItems));
         States_MarkQueued(compressedItems);
     }
 }
Beispiel #2
0
        private void ProcessStreamData(Stream networkStream)
        {
            var count = 0;

            using var enumerator = streamProcessor.GetCompressedWorkItems(networkStream).GetEnumerator();
            while (!streamProcessor.CancelToken.IsCancellationRequested && enumerator.MoveNext())
            {
                var compressedItem = enumerator.Current;

                // could put inside the task to start the task sooner after we hit this.
                // doing it here will limit the # of tasks created and waiting, and the # of compressedItems active at once,
                // which can run away very quickly.


                taskManager.Run(() =>
                {
                    try
                    {
                        compressedWorkersLimit.Wait(streamProcessor.CancelToken.Token);
                        try
                        {
                            ProcessCompressedWorkItem(compressedItem);
                        }
                        finally
                        {
                            compressedWorkersLimit.Release();
                        }
                    } catch (OperationCanceledException) {
                        Debug.WriteLine("Cancelling...");
                        // NOP
                    }
                });
                Stats_MarkQueued(compressedItem);

                count++;
                if (maxNumCompressedItemsToProcess != -1 && count >= maxNumCompressedItemsToProcess)
                {
                    return;
                }
            }

            Trace.WriteLine($"Processed {count} compressed work items.");
        }