private void Evict(IList <TimestampedValue <TElement> > elements, int size, IWindowEvictorContext ctx) { if (!HasTimestamp(elements)) { return; } var currentTime = GetMaxTimestamp(elements); var evictCutoff = currentTime - WindowSize; foreach (var element in elements) { if (element.Timestamp <= evictCutoff) { elements.Remove(element); } } }
private void Evict(IList <TimestampedValue <TElement> > elements, int size, IWindowEvictorContext ctx) { if (size <= _maxCount) { return; } var evictedCount = 0; foreach (var element in elements) { evictedCount++; if (evictedCount > size - _maxCount) { break; } else { elements.Remove(element); } } }
public void EvictBefore(IList <TimestampedValue <TElement> > elements, int size, TWindow window, IWindowEvictorContext ctx) { if (DoEvictAfter) { return; } Evict(elements, size, ctx); }