com.google.cloud.dataflow.sdk.transforms.windowing

## Class PaneInfo

- java.lang.Object
- - com.google.cloud.dataflow.sdk.transforms.windowing.PaneInfo

    public final class PaneInfo
    extends Object

Provides information about the pane an element belongs to. Every pane is implicitly associated with a window. Panes are observable only via the `DoFn.ProcessContext.pane()` method of the context passed to a `DoFn.processElement(com.google.cloud.dataflow.sdk.transforms.DoFn<InputT, OutputT>.ProcessContext)` overridden method.

Note: This does not uniquely identify a pane, and should not be used for comparisons.

### Nested Class Summary

Nested Classes
`static class` `PaneInfo.PaneInfoCoder` A Coder for encoding PaneInfo instances.
`static class` `PaneInfo.Timing` Enumerates the possibilities for the timing of this pane firing related to the input and output watermarks for its computation.

### Field Summary

Fields
`static PaneInfo` `NO_FIRING` `PaneInfo` to use for elements on (and before) initial window assignemnt (including elements read from sources) before they have passed through a `GroupByKey` and are associated with a particular trigger firing.
`static PaneInfo` `ON_TIME_AND_ONLY_FIRING` `PaneInfo` to use when there will be exactly one firing and it is on time.

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`static PaneInfo` `createPane(boolean isFirst, boolean isLast, PaneInfo.Timing timing)`
`static PaneInfo` `createPane(boolean isFirst, boolean isLast, PaneInfo.Timing timing, long index, long onTimeIndex)` Factory method to create a `PaneInfo` with the specified parameters.
`static PaneInfo` `decodePane(byte encodedPane)`
`boolean` `equals(Object obj)`
`long` `getIndex()` The zero-based index of this trigger firing that produced this pane.
`long` `getNonSpeculativeIndex()` The zero-based index of this trigger firing among non-speculative panes.
`PaneInfo.Timing` `getTiming()` Return true if this is the last pane that will be produced in the associated window.
`int` `hashCode()`
`boolean` `isFirst()` Return true if this is the first pane produced for the associated window.
`boolean` `isLast()` Return true if this is the last pane that will be produced in the associated window.
`boolean` `isUnknown()` Return true if there is no timing information for the current `PaneInfo`.
`String` `toString()`

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

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

### Field Detail

#### NO_FIRING

    public static final PaneInfo NO_FIRING

`PaneInfo` to use for elements on (and before) initial window assignemnt (including elements read from sources) before they have passed through a `GroupByKey` and are associated with a particular trigger firing.

#### ON_TIME_AND_ONLY_FIRING

    public static final PaneInfo ON_TIME_AND_ONLY_FIRING

`PaneInfo` to use when there will be exactly one firing and it is on time.

### Method Detail

#### createPane

    public static PaneInfo createPane(boolean isFirst,
                                      boolean isLast,
                                      PaneInfo.Timing timing)

#### createPane

    public static PaneInfo createPane(boolean isFirst,
                                      boolean isLast,
                                      PaneInfo.Timing timing,
                                      long index,
                                      long onTimeIndex)

Factory method to create a `PaneInfo` with the specified parameters.

#### decodePane

    public static PaneInfo decodePane(byte encodedPane)

#### isUnknown

    public boolean isUnknown()

Return true if there is no timing information for the current `PaneInfo`. This typically indicates that the current element has not been assigned to windows or passed through an operation that executes triggers yet.

#### isFirst

    public boolean isFirst()

Return true if this is the first pane produced for the associated window.

#### isLast

    public boolean isLast()

Return true if this is the last pane that will be produced in the associated window.

#### getTiming

    public PaneInfo.Timing getTiming()

Return true if this is the last pane that will be produced in the associated window.

#### getIndex

    public long getIndex()

The zero-based index of this trigger firing that produced this pane.

This will return 0 for the first time the timer fires, 1 for the next time, etc.

A given (key, window, pane-index) is guaranteed to be unique in the output of a group-by-key operation.

#### getNonSpeculativeIndex

    public long getNonSpeculativeIndex()

The zero-based index of this trigger firing among non-speculative panes.

This will return 0 for the first non-`PaneInfo.Timing.EARLY` timer firing, 1 for the next one, etc.

Always -1 for speculative data.

#### hashCode

    public int hashCode()

Overrides:
  `hashCode` in class `Object`

#### equals

    public boolean equals(Object obj)

Overrides:
  `equals` in class `Object`

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`