Example #1
0
            private void OnPush()
            {
                var element = Grab(_buffer.In);

                _queue.Add(element);

                if (_queue.Count >= _size)
                {
                    var deleted = _queue.DeleteMin();
                    //Console.WriteLine("Deleted {0}", deleted);
                }

                if (_downstreamWaiting)
                {
                    _downstreamWaiting = false;
                    var bufferedElement = GetElement();
                    Push(_buffer.Out, bufferedElement);
                }

                if (!BufferFull)
                {
                    Pull(_buffer.In);
                }
            }