public void OnNext(T t)
        {
            ArrayQueue <T> q = queue;

            if (q.Size() == n)
            {
                q.Drop();
            }
            q.Offer(t);
        }
Exemple #2
0
        public void OnNext(T t)
        {
            if (done)
            {
                return;
            }


            C b;

            if ((index++) % skip == 0)
            {
                try
                {
                    b = bufferFactory();
                }
                catch (Exception e)
                {
                    done = true;
                    s.Cancel();

                    actual.OnError(e);
                    return;
                }
                buffers.Offer(b);
            }

            if (buffers.Peek(out b))
            {
                if (b.Count + 1 == size)
                {
                    buffers.Drop();

                    b.Add(t);

                    produced++;

                    actual.OnNext(b);
                }
            }

            buffers.ForEach(v => v.Add(t));
        }