Class WindowManager<T>

    • Field Detail

      • EXPIRE_EVENTS_THRESHOLD

        public static final int EXPIRE_EVENTS_THRESHOLD
        Expire old events every EXPIRE_EVENTS_THRESHOLD to keep the window size in check.

        Note that if the eviction policy is based on watermarks, events will not be evicted until a new watermark would cause them to be considered expired anyway, regardless of this limit

        See Also:
        Constant Field Values
    • Method Detail

      • setEvictionPolicy

        public void setEvictionPolicy​(EvictionPolicy<T,​?> evictionPolicy)
      • setTriggerPolicy

        public void setTriggerPolicy​(TriggerPolicy<T,​?> triggerPolicy)
      • add

        public void add​(T event)
        Add an event into the window, with System.currentTimeMillis() as the tracking ts.
        Parameters:
        event - the event to add
      • add

        public void add​(T event,
                        long ts)
        Add an event into the window, with the given ts as the tracking ts.
        Parameters:
        event - the event to track
        ts - the timestamp
      • add

        public void add​(Event<T> windowEvent)
        Tracks a window event.
        Parameters:
        windowEvent - the window event to track
      • onTrigger

        public boolean onTrigger()
        The callback invoked by the trigger policy.
        Specified by:
        onTrigger in interface TriggerHandler
        Returns:
        true if the window was evaluated with at least one event in the window, false otherwise
      • shutdown

        public void shutdown()
      • compactWindow

        protected void compactWindow()
        expires events that fall out of the window every EXPIRE_EVENTS_THRESHOLD so that the window does not grow too big.
      • getEarliestEventTs

        public long getEarliestEventTs​(long startTs,
                                       long endTs)
        Scans the event queue and returns the next earliest event ts between the startTs and endTs.
        Parameters:
        startTs - the start ts (exclusive)
        endTs - the end ts (inclusive)
        Returns:
        the earliest event ts between startTs and endTs
      • getEventCount

        public int getEventCount​(long referenceTime)
        Scans the event queue and returns number of events having timestamp less than or equal to the reference time.
        Parameters:
        referenceTime - the reference timestamp in millis
        Returns:
        the count of events with timestamp less than or equal to referenceTime
      • getSlidingCountTimestamps

        public List<Long> getSlidingCountTimestamps​(long startTs,
                                                    long endTs,
                                                    int slidingCount)
        Scans the event queue and returns the list of event ts falling between startTs (exclusive) and endTs (inclusive) at each sliding interval counts.
        Parameters:
        startTs - the start timestamp (exclusive)
        endTs - the end timestamp (inclusive)
        slidingCount - the sliding interval count
        Returns:
        the list of event ts