blob: 52b3e57f14dcfba53560f0c4aad1122c4ef5a4ce [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>GrowableOffsetRangeTracker.RangeEndEstimator (Apache Beam 2.38.0-SNAPSHOT)</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="GrowableOffsetRangeTracker.RangeEndEstimator (Apache Beam 2.38.0-SNAPSHOT)";
}
}
catch(err) {
}
//-->
var methods = {"i0":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">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="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/beam/sdk/transforms/splittabledofn/GrowableOffsetRangeTracker.html" title="class in org.apache.beam.sdk.transforms.splittabledofn"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/beam/sdk/transforms/splittabledofn/HasDefaultTracker.html" title="interface in org.apache.beam.sdk.transforms.splittabledofn"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/beam/sdk/transforms/splittabledofn/GrowableOffsetRangeTracker.RangeEndEstimator.html" target="_top">Frames</a></li>
<li><a href="GrowableOffsetRangeTracker.RangeEndEstimator.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.beam.sdk.transforms.splittabledofn</div>
<h2 title="Interface GrowableOffsetRangeTracker.RangeEndEstimator" class="title">Interface GrowableOffsetRangeTracker.RangeEndEstimator</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Enclosing class:</dt>
<dd><a href="../../../../../../org/apache/beam/sdk/transforms/splittabledofn/GrowableOffsetRangeTracker.html" title="class in org.apache.beam.sdk.transforms.splittabledofn">GrowableOffsetRangeTracker</a></dd>
</dl>
<dl>
<dt>Functional Interface:</dt>
<dd>This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.</dd>
</dl>
<hr>
<br>
<pre>@FunctionalInterface
public static interface <span class="typeNameLabel">GrowableOffsetRangeTracker.RangeEndEstimator</span></pre>
<div class="block">Provides the estimated end offset of the range.
<p><a href="../../../../../../org/apache/beam/sdk/transforms/splittabledofn/GrowableOffsetRangeTracker.RangeEndEstimator.html#estimate--"><code>estimate()</code></a> is called to give the end offset when <a href="../../../../../../org/apache/beam/sdk/transforms/splittabledofn/GrowableOffsetRangeTracker.html#trySplit-double-"><code>GrowableOffsetRangeTracker.trySplit(double)</code></a> or <a href="../../../../../../org/apache/beam/sdk/transforms/splittabledofn/GrowableOffsetRangeTracker.html#getProgress--"><code>GrowableOffsetRangeTracker.getProgress()</code></a> is invoked. The end offset is exclusive for the range. The estimated end is not
required to monotonically increase as it will only be taken into consideration when the
estimated end offset is larger than the current position. Returning <code>Long.MAX_VALUE</code> as
the estimate implies the largest possible position for the range is <code>Long.MAX_VALUE - 1</code>.
Return <code>Long.MIN_VALUE</code> if an estimate can not be provided.
<p>Providing a good estimate is important for an accurate progress signal and will impact
splitting decisions by the runner.
<p>If <a href="../../../../../../org/apache/beam/sdk/transforms/splittabledofn/GrowableOffsetRangeTracker.RangeEndEstimator.html#estimate--"><code>estimate()</code></a> is expensive to compute, consider wrapping the implementation with
<code>Suppliers.memoizeWithExpiration(org.apache.beam.vendor.guava.v26_0_jre.com.google.common.base.Supplier&lt;T&gt;, long, java.util.concurrent.TimeUnit)</code> or equivalent as an optimization.
<p>TODO(BEAM-10032): Also consider using <a href="../../../../../../org/apache/beam/sdk/transforms/splittabledofn/GrowableOffsetRangeTracker.RangeEndEstimator.html" title="interface in org.apache.beam.sdk.transforms.splittabledofn"><code>GrowableOffsetRangeTracker.RangeEndEstimator</code></a> when the range is not ended
with <code>Long.MAX_VALUE</code>.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/splittabledofn/GrowableOffsetRangeTracker.RangeEndEstimator.html#estimate--">estimate</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="estimate--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>estimate</h4>
<pre>long&nbsp;estimate()</pre>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">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="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/beam/sdk/transforms/splittabledofn/GrowableOffsetRangeTracker.html" title="class in org.apache.beam.sdk.transforms.splittabledofn"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/beam/sdk/transforms/splittabledofn/HasDefaultTracker.html" title="interface in org.apache.beam.sdk.transforms.splittabledofn"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/beam/sdk/transforms/splittabledofn/GrowableOffsetRangeTracker.RangeEndEstimator.html" target="_top">Frames</a></li>
<li><a href="GrowableOffsetRangeTracker.RangeEndEstimator.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>