org.apache.storm.windowing

## Class WindowManager<T>

- java.lang.Object
- - org.apache.storm.windowing.WindowManager<T>

- All Implemented Interfaces:
    TriggerHandler
  Direct Known Subclasses:
    StatefulWindowManager

      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 Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected EvictionPolicy<T,?>` | `evictionPolicy`
    `static int` | `EXPIRE_EVENTS_THRESHOLD` Expire old events every EXPIRE_EVENTS_THRESHOLD to keep the window size in check.
    `protected Collection<Event<T>>` | `queue`
    `protected TriggerPolicy<T,?>` | `triggerPolicy`
    `protected WindowLifecycleListener<T>` | `windowLifecycleListener`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `WindowManager(WindowLifecycleListener<T> lifecycleListener)`
    `WindowManager(WindowLifecycleListener<T> lifecycleListener, Collection<Event<T>> queue)` Constructs a `WindowManager`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `add(Event<T> windowEvent)` Tracks a window event.
    `void` | `add(T event)` Add an event into the window, with `System.currentTimeMillis()` as the tracking ts.
    `void` | `add(T event, long ts)` Add an event into the window, with the given ts as the tracking ts.
    `protected void` | `compactWindow()` expires events that fall out of the window every EXPIRE_EVENTS_THRESHOLD so that the window does not grow too big.
    `long` | `getEarliestEventTs(long startTs, long endTs)` Scans the event queue and returns the next earliest event ts between the startTs and endTs.
    `int` | `getEventCount(long referenceTime)` Scans the event queue and returns number of events having timestamp less than or equal to the reference time.
    `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.
    `Map<String,Optional<?>>` | `getState()`
    `boolean` | `onTrigger()` The callback invoked by the trigger policy.
    `void` | `restoreState(Map<String,Optional<?>> state)`
    `void` | `setEvictionPolicy(EvictionPolicy<T,?> evictionPolicy)`
    `void` | `setTriggerPolicy(TriggerPolicy<T,?> triggerPolicy)`
    `void` | `shutdown()`
    `String` | `toString()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### 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

    - #### queue

          protected final Collection<Event<T>> queue

    - #### windowLifecycleListener

          protected final WindowLifecycleListener<T> windowLifecycleListener

    - #### evictionPolicy

          protected EvictionPolicy<T,?> evictionPolicy

    - #### triggerPolicy

          protected TriggerPolicy<T,?> triggerPolicy

  - ### Constructor Detail

    - #### WindowManager

          public WindowManager(WindowLifecycleListener<T> lifecycleListener)

    - #### WindowManager

          public WindowManager(WindowLifecycleListener<T> lifecycleListener,
                               Collection<Event<T>> queue)

      Constructs a `WindowManager`.

      Parameters:
        `lifecycleListener` - the `WindowLifecycleListener`
        `queue` - a collection where the events in the window can be enqueued.
        Note: This collection has to be thread safe.

  - ### 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

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### restoreState

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

    - #### getState

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

Copyright © 2019 The Apache Software Foundation. All rights reserved.