W- The type of
Windowthat this set is keeping track of.
public class MergingWindowSet<W extends Window> extends Object
Windowswhen using a
When merging windows, we keep one of the original windows as the state window, i.e. the window
that is used as namespace to store the window elements. Elements from the state windows of merged
windows must be merged into this one state window. We keep a mapping from in-flight window to
state window that can be queried using
A new window can be added to the set of in-flight windows using
MergeFunction). This might merge other windows and the caller must react accordingly in the
MergingWindowSet.MergeFunction.merge(Object, Collection, Object, Collection) and adjust the outside view
of windows and state.
Windows can be removed from the set of windows using
|Modifier and Type||Class and Description|
|Constructor and Description|
|Modifier and Type||Method and Description|
Adds a new
Returns the state window for the given in-flight
Set current key context of this window set.
Removes the given window from the set of in-flight windows.
public MergingWindowSet(MergingWindowAssigner<W> windowAssigner, MapState<W,W> mapping)
MergingWindowSetfrom the given state.
public void initializeCache(Object key) throws Exception
initializeCache(Object) must be called before
key- the current access key
public W getStateWindow(W window) throws Exception
Window. The state window is the
Windowin which we keep the actual state of a given in-flight window. Windows might expand but we keep to original state window for keeping the elements of the window to avoid costly state juggling.
window- The window for which to get the state window.
public void retireWindow(W window) throws Exception
public W addWindow(W newWindow, MergingWindowSet.MergeFunction<W> mergeFunction) throws Exception
Windowto the set of in-flight windows. It might happen that this triggers merging of previously in-flight windows. In that case, the provided
This returns the window that is the representative of the added window after adding. This can either be the new window itself, if no merge occurred, or the newly merged window. Adding an element to a window or calling trigger functions should only happen on the returned representative. This way, we never have to deal with a new window that is immediately swallowed up by another window.
If the new window is merged, the
MergeFunction callback arguments also don't
contain the new window as part of the list of merged windows.
newWindow- The new
mergeFunction- The callback to be invoked in case a merge occurs.
Windowthat new new
Windowended up in. This can also be the new
Windowitself in case no merge occurred.
Copyright © 2014–2023 The Apache Software Foundation. All rights reserved.