public void OnNext(T t) { ArrayQueue <T> q = queue; if (q.Size() == n) { q.Drop(); } q.Offer(t); }
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)); }