Class WindowManager<T>

Type Parameters:
T - the type of event in the window.
All Implemented Interfaces:
Direct Known Subclasses:

public class WindowManager<T> extends Object implements TriggerHandler
Tracks a window of events and fires WindowLifecycleListener callbacks on expiry of events or activation of the window due to TriggerPolicy.
  • Field Details


      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:
    • queue

      protected final Collection<Event<T>> queue
    • windowLifecycleListener

      protected final WindowLifecycleListener<T> windowLifecycleListener
    • evictionPolicy

      protected EvictionPolicy<T,?> evictionPolicy
    • triggerPolicy

      protected TriggerPolicy<T,?> triggerPolicy
  • Constructor Details

  • Method Details

    • 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.
      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.
      event - the event to track
      ts - the timestamp
    • add

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

      public boolean onTrigger()
      The callback invoked by the trigger policy.
      Specified by:
      onTrigger in interface TriggerHandler
      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.
      startTs - the start ts (exclusive)
      endTs - the end ts (inclusive)
      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.
      referenceTime - the reference timestamp in millis
      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.
      startTs - the start timestamp (exclusive)
      endTs - the end timestamp (inclusive)
      slidingCount - the sliding interval count
      the list of event ts
    • toString

      public String toString()
      toString in class Object
    • restoreState

      public void restoreState(Map<String,Optional<?>> state)
    • getState

      public Map<String,Optional<?>> getState()