blob: 81e729ce905fd45fbec29ed43950465afb6f59c7 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>TimeWindows (kafka 3.0.1 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.kafka.streams.kstream, class: TimeWindows">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var data = {"i0":10,"i1":10,"i2":42,"i3":10,"i4":10,"i5":41,"i6":9,"i7":9,"i8":10,"i9":10,"i10":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "alt-color";
var rowColor = "row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar.top">
<div class="skip-nav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar.top.firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip.navbar.top">
<!-- -->
</span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.kafka.streams.kstream</a></div>
<h1 title="Class TimeWindows" class="title">Class TimeWindows</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="Windows.html" title="class in org.apache.kafka.streams.kstream">org.apache.kafka.streams.kstream.Windows</a>&lt;org.apache.kafka.streams.kstream.internals.TimeWindow&gt;
<div class="inheritance">org.apache.kafka.streams.kstream.TimeWindows</div>
</div>
</div>
<section class="description">
<hr>
<pre>public final class <span class="type-name-label">TimeWindows</span>
extends <a href="Windows.html" title="class in org.apache.kafka.streams.kstream">Windows</a>&lt;org.apache.kafka.streams.kstream.internals.TimeWindow&gt;</pre>
<div class="block">The fixed-size time-based window specifications used for aggregations.
<p>
The semantics of time-based aggregation windows are: Every T1 (advance) milliseconds, compute the aggregate total for
T2 (size) milliseconds.
<ul>
<li> If <code>advance &lt; size</code> a hopping windows is defined:<br/>
it discretize a stream into overlapping windows, which implies that a record maybe contained in one and or
more "adjacent" windows.</li>
<li> If <code>advance == size</code> a tumbling window is defined:<br/>
it discretize a stream into non-overlapping windows, which implies that a record is only ever contained in
one and only one tumbling window.</li>
</ul>
Thus, the specified <code>TimeWindow</code>s are aligned to the epoch.
Aligned to the epoch means, that the first window starts at timestamp zero.
For example, hopping windows with size of 5000ms and advance of 3000ms, have window boundaries
[0;5000),[3000;8000),... and not [1000;6000),[4000;9000),... or even something "random" like [1452;6452),[4452;9452),...
<p>
For time semantics, see <a href="../processor/TimestampExtractor.html" title="interface in org.apache.kafka.streams.processor"><code>TimestampExtractor</code></a>.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd><a href="SessionWindows.html" title="class in org.apache.kafka.streams.kstream"><code>SessionWindows</code></a>,
<a href="UnlimitedWindows.html" title="class in org.apache.kafka.streams.kstream"><code>UnlimitedWindows</code></a>,
<a href="JoinWindows.html" title="class in org.apache.kafka.streams.kstream"><code>JoinWindows</code></a>,
<a href="KGroupedStream.html#windowedBy(org.apache.kafka.streams.kstream.Windows)"><code>KGroupedStream.windowedBy(Windows)</code></a>,
<a href="../processor/TimestampExtractor.html" title="interface in org.apache.kafka.streams.processor"><code>TimestampExtractor</code></a></dd>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field.summary">
<h2>Field Summary</h2>
<div class="member-summary">
<table class="summary-table">
<caption><span>Fields</span></caption>
<thead>
<tr>
<th class="col-first" scope="col">Modifier and Type</th>
<th class="col-second" scope="col">Field</th>
<th class="col-last" scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr class="alt-color">
<td class="col-first"><code>long</code></td>
<th class="col-second" scope="row"><code><span class="member-name-link"><a href="#advanceMs">advanceMs</a></span></code></th>
<td class="col-last">
<div class="block">The size of the window's advance interval in milliseconds, i.e., by how much a window moves forward relative to
the previous one.</div>
</td>
</tr>
<tr class="row-color">
<td class="col-first"><code>long</code></td>
<th class="col-second" scope="row"><code><span class="member-name-link"><a href="#sizeMs">sizeMs</a></span></code></th>
<td class="col-last">
<div class="block">The size of the windows in milliseconds.</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="inherited-list">
<h3 id="fields.inherited.from.class.org.apache.kafka.streams.kstream.Windows">Fields inherited from class&nbsp;org.apache.kafka.streams.kstream.<a href="Windows.html" title="class in org.apache.kafka.streams.kstream">Windows</a></h3>
<code><a href="Windows.html#DEPRECATED_DEFAULT_24_HR_GRACE_PERIOD">DEPRECATED_DEFAULT_24_HR_GRACE_PERIOD</a>, <a href="Windows.html#NO_GRACE_PERIOD">NO_GRACE_PERIOD</a></code></div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method.summary">
<h2>Method Summary</h2>
<div class="member-summary" id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" id="t0" class="active-table-tab">All Methods</button><button role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" id="t1" class="table-tab" onclick="show(1);">Static Methods</button><button role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" id="t2" class="table-tab" onclick="show(2);">Instance Methods</button><button role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" id="t4" class="table-tab" onclick="show(8);">Concrete Methods</button><button role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" id="t6" class="table-tab" onclick="show(32);">Deprecated Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<table class="summary-table" aria-labelledby="t0">
<thead>
<tr>
<th class="col-first" scope="col">Modifier and Type</th>
<th class="col-second" scope="col">Method</th>
<th class="col-last" scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr class="alt-color" id="i0">
<td class="col-first"><code><a href="TimeWindows.html" title="class in org.apache.kafka.streams.kstream">TimeWindows</a></code></td>
<th class="col-second" scope="row"><code><span class="member-name-link"><a href="#advanceBy(java.time.Duration)">advanceBy</a></span>&#8203;(<a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;advance)</code></th>
<td class="col-last">
<div class="block">Return a window definition with the original size, but advance ("hop") the window by the given interval, which
specifies by how much a window moves forward relative to the previous one.</div>
</td>
</tr>
<tr class="row-color" id="i1">
<td class="col-first"><code>boolean</code></td>
<th class="col-second" scope="row"><code><span class="member-name-link"><a href="#equals(java.lang.Object)">equals</a></span>&#8203;(<a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></th>
<td class="col-last">&nbsp;</td>
</tr>
<tr class="alt-color" id="i2">
<td class="col-first"><code><a href="TimeWindows.html" title="class in org.apache.kafka.streams.kstream">TimeWindows</a></code></td>
<th class="col-second" scope="row"><code><span class="member-name-link"><a href="#grace(java.time.Duration)">grace</a></span>&#8203;(<a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;afterWindowEnd)</code></th>
<td class="col-last">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">since 3.0.</div>
</div>
</td>
</tr>
<tr class="row-color" id="i3">
<td class="col-first"><code>long</code></td>
<th class="col-second" scope="row"><code><span class="member-name-link"><a href="#gracePeriodMs()">gracePeriodMs</a></span>()</code></th>
<td class="col-last">
<div class="block">Return the window grace period (the time to admit
out-of-order events after the end of the window.)
Delay is defined as (stream_time - record_timestamp).</div>
</td>
</tr>
<tr class="alt-color" id="i4">
<td class="col-first"><code>int</code></td>
<th class="col-second" scope="row"><code><span class="member-name-link"><a href="#hashCode()">hashCode</a></span>()</code></th>
<td class="col-last">&nbsp;</td>
</tr>
<tr class="row-color" id="i5">
<td class="col-first"><code>static <a href="TimeWindows.html" title="class in org.apache.kafka.streams.kstream">TimeWindows</a></code></td>
<th class="col-second" scope="row"><code><span class="member-name-link"><a href="#of(java.time.Duration)">of</a></span>&#8203;(<a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;size)</code></th>
<td class="col-last">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">since 3.0.</div>
</div>
</td>
</tr>
<tr class="alt-color" id="i6">
<td class="col-first"><code>static <a href="TimeWindows.html" title="class in org.apache.kafka.streams.kstream">TimeWindows</a></code></td>
<th class="col-second" scope="row"><code><span class="member-name-link"><a href="#ofSizeAndGrace(java.time.Duration,java.time.Duration)">ofSizeAndGrace</a></span>&#8203;(<a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;size,
<a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;afterWindowEnd)</code></th>
<td class="col-last">
<div class="block">Return a window definition with the given window size, and with the advance interval being equal to the window
size.</div>
</td>
</tr>
<tr class="row-color" id="i7">
<td class="col-first"><code>static <a href="TimeWindows.html" title="class in org.apache.kafka.streams.kstream">TimeWindows</a></code></td>
<th class="col-second" scope="row"><code><span class="member-name-link"><a href="#ofSizeWithNoGrace(java.time.Duration)">ofSizeWithNoGrace</a></span>&#8203;(<a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;size)</code></th>
<td class="col-last">
<div class="block">Return a window definition with the given window size, and with the advance interval being equal to the window
size.</div>
</td>
</tr>
<tr class="alt-color" id="i8">
<td class="col-first"><code>long</code></td>
<th class="col-second" scope="row"><code><span class="member-name-link"><a href="#size()">size</a></span>()</code></th>
<td class="col-last">
<div class="block">Return the size of the specified windows in milliseconds.</div>
</td>
</tr>
<tr class="row-color" id="i9">
<td class="col-first"><code><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></td>
<th class="col-second" scope="row"><code><span class="member-name-link"><a href="#toString()">toString</a></span>()</code></th>
<td class="col-last">&nbsp;</td>
</tr>
<tr class="alt-color" id="i10">
<td class="col-first"><code><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>,&#8203;org.apache.kafka.streams.kstream.internals.TimeWindow&gt;</code></td>
<th class="col-second" scope="row"><code><span class="member-name-link"><a href="#windowsFor(long)">windowsFor</a></span>&#8203;(long&nbsp;timestamp)</code></th>
<td class="col-last">
<div class="block">Create all windows that contain the provided timestamp, indexed by non-negative window start timestamps.</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="inherited-list">
<h3 id="methods.inherited.from.class.java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field.detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="sizeMs">
<h3>sizeMs</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="member-name">sizeMs</span></div>
<div class="block">The size of the windows in milliseconds.</div>
</section>
</li>
<li>
<section class="detail" id="advanceMs">
<h3>advanceMs</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="member-name">advanceMs</span></div>
<div class="block">The size of the window's advance interval in milliseconds, i.e., by how much a window moves forward relative to
the previous one.</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method.detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="ofSizeWithNoGrace(java.time.Duration)">
<h3>ofSizeWithNoGrace</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="TimeWindows.html" title="class in org.apache.kafka.streams.kstream">TimeWindows</a></span>&nbsp;<span class="member-name">ofSizeWithNoGrace</span>&#8203;(<span class="parameters"><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;size)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></span></div>
<div class="block">Return a window definition with the given window size, and with the advance interval being equal to the window
size.
The time interval represented by the N-th window is: <code>[N * size, N * size + size)</code>.
<p>
This provides the semantics of tumbling windows, which are fixed-sized, gap-less, non-overlapping windows.
Tumbling windows are a special case of hopping windows with <code>advance == size</code>.
<p>
CAUTION: Using this method implicitly sets the grace period to zero, which means that any out-of-order
records arriving after the window ends are considered late and will be dropped.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>size</code> - The size of the window</dd>
<dt>Returns:</dt>
<dd>a new window definition with default no grace period. Note that this means out-of-order records arriving after the window end will be dropped</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if the specified window size is zero or negative or can't be represented as <code>long milliseconds</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="ofSizeAndGrace(java.time.Duration,java.time.Duration)">
<h3>ofSizeAndGrace</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="TimeWindows.html" title="class in org.apache.kafka.streams.kstream">TimeWindows</a></span>&nbsp;<span class="member-name">ofSizeAndGrace</span>&#8203;(<span class="parameters"><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;size,
<a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;afterWindowEnd)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></span></div>
<div class="block">Return a window definition with the given window size, and with the advance interval being equal to the window
size.
The time interval represented by the N-th window is: <code>[N * size, N * size + size)</code>.
<p>
This provides the semantics of tumbling windows, which are fixed-sized, gap-less, non-overlapping windows.
Tumbling windows are a special case of hopping windows with <code>advance == size</code>.
<p>
Using this method explicitly sets the grace period to the duration specified by <code>afterWindowEnd</code>, which
means that only out-of-order records arriving more than the grace period after the window end will be dropped.
The window close, after which any incoming records are considered late and will be rejected, is defined as
<code>windowEnd + afterWindowEnd</code></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>size</code> - The size of the window. Must be larger than zero</dd>
<dd><code>afterWindowEnd</code> - The grace period to admit out-of-order events to a window. Must be non-negative.</dd>
<dt>Returns:</dt>
<dd>a TimeWindows object with the specified size and the specified grace period</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if <code>afterWindowEnd</code> is negative or can't be represented as <code>long milliseconds</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="of(java.time.Duration)">
<h3>of</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="TimeWindows.html" title="class in org.apache.kafka.streams.kstream">TimeWindows</a></span>&nbsp;<span class="member-name">of</span>&#8203;(<span class="parameters"><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;size)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">since 3.0. Use <a href="#ofSizeWithNoGrace(java.time.Duration)"><code>ofSizeWithNoGrace(Duration)</code></a> } instead</div>
</div>
<div class="block">Return a window definition with the given window size, and with the advance interval being equal to the window
size.
The time interval represented by the N-th window is: <code>[N * size, N * size + size)</code>.
<p>
This provides the semantics of tumbling windows, which are fixed-sized, gap-less, non-overlapping windows.
Tumbling windows are a special case of hopping windows with <code>advance == size</code>.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>size</code> - The size of the window</dd>
<dt>Returns:</dt>
<dd>a new window definition without specifying the grace period (default to 24 hours minus window <code>size</code>)</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if the specified window size is zero or negative or can't be represented as <code>long milliseconds</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="advanceBy(java.time.Duration)">
<h3>advanceBy</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="TimeWindows.html" title="class in org.apache.kafka.streams.kstream">TimeWindows</a></span>&nbsp;<span class="member-name">advanceBy</span>&#8203;(<span class="parameters"><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;advance)</span></div>
<div class="block">Return a window definition with the original size, but advance ("hop") the window by the given interval, which
specifies by how much a window moves forward relative to the previous one.
The time interval represented by the N-th window is: <code>[N * advance, N * advance + size)</code>.
<p>
This provides the semantics of hopping windows, which are fixed-sized, overlapping windows.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>advance</code> - The advance interval ("hop") of the window, with the requirement that <code>0 &lt; advance.toMillis() &lt;= sizeMs</code>.</dd>
<dt>Returns:</dt>
<dd>a new window definition with default maintain duration of 1 day</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if the advance interval is negative, zero, or larger than the window size</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="windowsFor(long)">
<h3>windowsFor</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>,&#8203;org.apache.kafka.streams.kstream.internals.TimeWindow&gt;</span>&nbsp;<span class="member-name">windowsFor</span>&#8203;(<span class="parameters">long&nbsp;timestamp)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="Windows.html#windowsFor(long)">Windows</a></code></span></div>
<div class="block">Create all windows that contain the provided timestamp, indexed by non-negative window start timestamps.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="Windows.html#windowsFor(long)">windowsFor</a></code>&nbsp;in class&nbsp;<code><a href="Windows.html" title="class in org.apache.kafka.streams.kstream">Windows</a>&lt;org.apache.kafka.streams.kstream.internals.TimeWindow&gt;</code></dd>
<dt>Parameters:</dt>
<dd><code>timestamp</code> - the timestamp window should get created for</dd>
<dt>Returns:</dt>
<dd>a map of <code>windowStartTimestamp -&gt; Window</code> entries</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="size()">
<h3>size</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="member-name">size</span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="Windows.html#size()">Windows</a></code></span></div>
<div class="block">Return the size of the specified windows in milliseconds.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="Windows.html#size()">size</a></code>&nbsp;in class&nbsp;<code><a href="Windows.html" title="class in org.apache.kafka.streams.kstream">Windows</a>&lt;org.apache.kafka.streams.kstream.internals.TimeWindow&gt;</code></dd>
<dt>Returns:</dt>
<dd>the size of the specified windows</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="grace(java.time.Duration)">
<h3>grace</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="TimeWindows.html" title="class in org.apache.kafka.streams.kstream">TimeWindows</a></span>&nbsp;<span class="member-name">grace</span>&#8203;(<span class="parameters"><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/time/Duration.html" title="class or interface in java.time" class="external-link">Duration</a>&nbsp;afterWindowEnd)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">since 3.0. Use <a href="#ofSizeAndGrace(java.time.Duration,java.time.Duration)"><code>ofSizeAndGrace(Duration, Duration)</code></a> instead</div>
</div>
<div class="block">Reject out-of-order events that arrive more than <code>millisAfterWindowEnd</code>
after the end of its window.
<p>
Delay is defined as (stream_time - record_timestamp).</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>afterWindowEnd</code> - The grace period to admit out-of-order events to a window.</dd>
<dt>Returns:</dt>
<dd>this updated builder</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if <code>afterWindowEnd</code> is negative or can't be represented as <code>long milliseconds</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="gracePeriodMs()">
<h3>gracePeriodMs</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="member-name">gracePeriodMs</span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="Windows.html#gracePeriodMs()">Windows</a></code></span></div>
<div class="block">Return the window grace period (the time to admit
out-of-order events after the end of the window.)
Delay is defined as (stream_time - record_timestamp).</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="Windows.html#gracePeriodMs()">gracePeriodMs</a></code>&nbsp;in class&nbsp;<code><a href="Windows.html" title="class in org.apache.kafka.streams.kstream">Windows</a>&lt;org.apache.kafka.streams.kstream.internals.TimeWindow&gt;</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="equals(java.lang.Object)">
<h3>equals</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="member-name">equals</span>&#8203;(<span class="parameters"><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</span></div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="hashCode()">
<h3>hashCode</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="member-name">hashCode</span>()</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="toString()">
<h3>toString</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="member-name">toString</span>()</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottom-nav" id="navbar.bottom">
<div class="skip-nav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar.bottom.firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
</div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<span class="skip-nav" id="skip.navbar.bottom">
<!-- -->
</span></nav>
</footer>
</div>
</div>
</body>
</html>