예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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);
                }
            }
        }
예제 #3
0
        public void EvictBefore(IList <TimestampedValue <TElement> > elements, int size, TWindow window, IWindowEvictorContext ctx)
        {
            if (DoEvictAfter)
            {
                return;
            }

            Evict(elements, size, ctx);
        }