<!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 (1.8.0_112) on Sun Feb 26 17:08:08 EST 2017 -->
<title>PlumbingStreams (Edgent v1.1.0)</title>
<meta name="date" content="2017-02-26">
<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="PlumbingStreams (Edgent v1.1.0)";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete 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="class-use/PlumbingStreams.html">Use</a></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/edgent/topology/plumbing/LoadBalancedSplitter.html" title="class in org.apache.edgent.topology.plumbing"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/edgent/topology/plumbing/Valve.html" title="class in org.apache.edgent.topology.plumbing"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/edgent/topology/plumbing/PlumbingStreams.html" target="_top">Frames</a></li>
<li><a href="PlumbingStreams.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><a href="#constructor.summary">Constr</a>&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><a href="#constructor.detail">Constr</a>&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.edgent.topology.plumbing</div>
<h2 title="Class PlumbingStreams" class="title">Class PlumbingStreams</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.edgent.topology.plumbing.PlumbingStreams</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">PlumbingStreams</span>
extends java.lang.Object</pre>
<div class="block">Plumbing utilities for <a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology"><code>TStream</code></a>.
 Methods that manipulate the flow of tuples in a streaming topology,
 but are not part of the logic of the application.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#PlumbingStreams--">PlumbingStreams</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== 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="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete 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>static &lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;java.util.List&lt;T&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#barrier-java.util.List-">barrier</a></span>(java.util.List&lt;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&gt;&nbsp;streams)</code>
<div class="block">A tuple synchronization barrier.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;java.util.List&lt;T&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#barrier-java.util.List-int-">barrier</a></span>(java.util.List&lt;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&gt;&nbsp;streams,
       int&nbsp;queueCapacity)</code>
<div class="block">A tuple synchronization barrier.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#blockingDelay-org.apache.edgent.topology.TStream-long-java.util.concurrent.TimeUnit-">blockingDelay</a></span>(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
             long&nbsp;delay,
             java.util.concurrent.TimeUnit&nbsp;unit)</code>
<div class="block">Insert a blocking delay between tuples.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#blockingOneShotDelay-org.apache.edgent.topology.TStream-long-java.util.concurrent.TimeUnit-">blockingOneShotDelay</a></span>(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
                    long&nbsp;delay,
                    java.util.concurrent.TimeUnit&nbsp;unit)</code>
<div class="block">Insert a blocking delay before forwarding the first tuple and
 no delay for subsequent tuples.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#blockingThrottle-org.apache.edgent.topology.TStream-long-java.util.concurrent.TimeUnit-">blockingThrottle</a></span>(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
                long&nbsp;delay,
                java.util.concurrent.TimeUnit&nbsp;unit)</code>
<div class="block">Maintain a constant blocking delay between tuples.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static &lt;T,U,R&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;R&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#concurrent-org.apache.edgent.topology.TStream-java.util.List-org.apache.edgent.function.Function-">concurrent</a></span>(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
          java.util.List&lt;<a href="../../../../../org/apache/edgent/function/Function.html" title="interface in org.apache.edgent.function">Function</a>&lt;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;,<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;U&gt;&gt;&gt;&nbsp;pipelines,
          <a href="../../../../../org/apache/edgent/function/Function.html" title="interface in org.apache.edgent.function">Function</a>&lt;java.util.List&lt;U&gt;,R&gt;&nbsp;combiner)</code>
<div class="block">Perform analytics concurrently.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>static &lt;T,U,R&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;R&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#concurrentMap-org.apache.edgent.topology.TStream-java.util.List-org.apache.edgent.function.Function-">concurrentMap</a></span>(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
             java.util.List&lt;<a href="../../../../../org/apache/edgent/function/Function.html" title="interface in org.apache.edgent.function">Function</a>&lt;T,U&gt;&gt;&nbsp;mappers,
             <a href="../../../../../org/apache/edgent/function/Function.html" title="interface in org.apache.edgent.function">Function</a>&lt;java.util.List&lt;U&gt;,R&gt;&nbsp;combiner)</code>
<div class="block">Perform analytics concurrently.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#gate-org.apache.edgent.topology.TStream-java.util.concurrent.Semaphore-">gate</a></span>(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
    java.util.concurrent.Semaphore&nbsp;semaphore)</code>
<div class="block">Control the flow of tuples to an output stream.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#isolate-org.apache.edgent.topology.TStream-boolean-">isolate</a></span>(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
       boolean&nbsp;ordered)</code>
<div class="block">Isolate upstream processing from downstream processing.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#isolate-org.apache.edgent.topology.TStream-int-">isolate</a></span>(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
       int&nbsp;queueCapacity)</code>
<div class="block">Isolate upstream processing from downstream processing.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static &lt;T,R&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;R&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#parallel-org.apache.edgent.topology.TStream-int-org.apache.edgent.function.ToIntFunction-org.apache.edgent.function.BiFunction-">parallel</a></span>(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
        int&nbsp;width,
        <a href="../../../../../org/apache/edgent/function/ToIntFunction.html" title="interface in org.apache.edgent.function">ToIntFunction</a>&lt;T&gt;&nbsp;splitter,
        <a href="../../../../../org/apache/edgent/function/BiFunction.html" title="interface in org.apache.edgent.function">BiFunction</a>&lt;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;,java.lang.Integer,<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;R&gt;&gt;&nbsp;pipeline)</code>
<div class="block">Perform an analytic pipeline on tuples in parallel.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>static &lt;T,R&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;R&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#parallelBalanced-org.apache.edgent.topology.TStream-int-org.apache.edgent.function.BiFunction-">parallelBalanced</a></span>(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
                int&nbsp;width,
                <a href="../../../../../org/apache/edgent/function/BiFunction.html" title="interface in org.apache.edgent.function">BiFunction</a>&lt;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;,java.lang.Integer,<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;R&gt;&gt;&nbsp;pipeline)</code>
<div class="block">Perform an analytic pipeline on tuples in parallel.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>static &lt;T,U&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;U&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#parallelMap-org.apache.edgent.topology.TStream-int-org.apache.edgent.function.ToIntFunction-org.apache.edgent.function.BiFunction-">parallelMap</a></span>(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
           int&nbsp;width,
           <a href="../../../../../org/apache/edgent/function/ToIntFunction.html" title="interface in org.apache.edgent.function">ToIntFunction</a>&lt;T&gt;&nbsp;splitter,
           <a href="../../../../../org/apache/edgent/function/BiFunction.html" title="interface in org.apache.edgent.function">BiFunction</a>&lt;T,java.lang.Integer,U&gt;&nbsp;mapper)</code>
<div class="block">Perform an analytic function on tuples in parallel.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>static &lt;T,K&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#pressureReliever-org.apache.edgent.topology.TStream-org.apache.edgent.function.Function-int-">pressureReliever</a></span>(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
                <a href="../../../../../org/apache/edgent/function/Function.html" title="interface in org.apache.edgent.function">Function</a>&lt;T,K&gt;&nbsp;keyFunction,
                int&nbsp;count)</code>
<div class="block">Relieve pressure on upstream processing by discarding tuples.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/function/ToIntFunction.html" title="interface in org.apache.edgent.function">ToIntFunction</a>&lt;T&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#roundRobinSplitter-int-">roundRobinSplitter</a></span>(int&nbsp;width)</code>
<div class="block">A round-robin splitter ToIntFunction</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="PlumbingStreams--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>PlumbingStreams</h4>
<pre>public&nbsp;PlumbingStreams()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="blockingDelay-org.apache.edgent.topology.TStream-long-java.util.concurrent.TimeUnit-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>blockingDelay</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;blockingDelay(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
                                           long&nbsp;delay,
                                           java.util.concurrent.TimeUnit&nbsp;unit)</pre>
<div class="block">Insert a blocking delay between tuples.
 Returned stream is the input stream delayed by <code>delay</code>.
 <p>
 Delays less than 1msec are translated to a 0 delay.
 <p>
 This function always adds the <code>delay</code> amount after receiving
 a tuple before forwarding it.  
 <p>
 Downstream tuple processing delays will affect
 the overall delay of a subsequent tuple.
 <p>
 e.g., the input stream contains two tuples t1 and t2 and
 the delay is 100ms.  The forwarding of t1 is delayed by 100ms.
 Then if a downstream processing delay of 80ms occurs, this function
 receives t2 80ms after it forwarded t1 and it will delay another
 100ms before forwarding t2.  Hence the overall delay between forwarding
 t1 and t2 is 180ms.
 See <a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#blockingThrottle-long-java.util.concurrent.TimeUnit-"><code>blockingThrottle</code></a>.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Tuple type</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>stream</code> - Stream t</dd>
<dd><code>delay</code> - Amount of time to delay a tuple.</dd>
<dd><code>unit</code> - Time unit for <code>delay</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Stream that will be delayed.</dd>
</dl>
</li>
</ul>
<a name="blockingThrottle-org.apache.edgent.topology.TStream-long-java.util.concurrent.TimeUnit-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>blockingThrottle</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;blockingThrottle(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
                                              long&nbsp;delay,
                                              java.util.concurrent.TimeUnit&nbsp;unit)</pre>
<div class="block">Maintain a constant blocking delay between tuples.
 The returned stream is the input stream throttled by <code>delay</code>.
 <p>
 Delays less than 1msec are translated to a 0 delay.
 <p>
 Sample use:
 <pre><code>
 TStream&lt;String&gt; stream = topology.strings("a", "b, "c");
 // Create a stream with tuples throttled to 1 second intervals.
 TStream&lt;String&gt; throttledStream = blockingThrottle(stream, 1, TimeUnit.SECOND);
 // print out the throttled tuples as they arrive
 throttledStream.peek(t -&gt; System.out.println(new Date() + " - " + t));
 </code></pre>
 <p>
 The function adjusts for downstream processing delays.
 The first tuple is not delayed.  If <code>delay</code> has already
 elapsed since the prior tuple was forwarded, the tuple 
 is forwarded immediately.
 Otherwise, forwarding the tuple is delayed to achieve
 a <code>delay</code> amount since forwarding the prior tuple.
 <p>
 e.g., the input stream contains two tuples t1 and t2 and
 the delay is 100ms.  The forwarding of t1 is delayed by 100ms.
 Then if a downstream processing delay of 80ms occurs, this function
 receives t2 80ms after it forwarded t1 and it will only delay another
 20ms (100ms - 80ms) before forwarding t2.  
 Hence the overall delay between forwarding t1 and t2 remains 100ms.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - tuple type</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>stream</code> - the stream to throttle</dd>
<dd><code>delay</code> - Amount of time to delay a tuple.</dd>
<dd><code>unit</code> - Time unit for <code>delay</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the throttled stream</dd>
</dl>
</li>
</ul>
<a name="blockingOneShotDelay-org.apache.edgent.topology.TStream-long-java.util.concurrent.TimeUnit-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>blockingOneShotDelay</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;blockingOneShotDelay(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
                                                  long&nbsp;delay,
                                                  java.util.concurrent.TimeUnit&nbsp;unit)</pre>
<div class="block">Insert a blocking delay before forwarding the first tuple and
 no delay for subsequent tuples.
 <p>
 Delays less than 1msec are translated to a 0 delay.
 <p>
 Sample use:
 <pre><code>
 TStream&lt;String&gt; stream = topology.strings("a", "b, "c");
 // create a stream where the first tuple is delayed by 5 seconds. 
 TStream&lt;String&gt; oneShotDelayedStream =
      stream.map( blockingOneShotDelay(5, TimeUnit.SECONDS) );
 </code></pre></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - tuple type</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>stream</code> - input stream</dd>
<dd><code>delay</code> - Amount of time to delay a tuple.</dd>
<dd><code>unit</code> - Time unit for <code>delay</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the delayed stream</dd>
</dl>
</li>
</ul>
<a name="pressureReliever-org.apache.edgent.topology.TStream-org.apache.edgent.function.Function-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>pressureReliever</h4>
<pre>public static&nbsp;&lt;T,K&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;pressureReliever(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
                                                <a href="../../../../../org/apache/edgent/function/Function.html" title="interface in org.apache.edgent.function">Function</a>&lt;T,K&gt;&nbsp;keyFunction,
                                                int&nbsp;count)</pre>
<div class="block">Relieve pressure on upstream processing by discarding tuples.
 This method ensures that upstream processing is not
 constrained by any delay in downstream processing,
 for example by a connector not being able to connect
 to its external system.
 <P>
 Any downstream processing of the returned stream is isolated
 from <code>stream</code> so that any slow down does not affect <code>stream</code>.
 When the downstream processing cannot keep up with rate of
 <code>stream</code> tuples will be dropped from returned stream.
 <BR>
 Up to <code>count</code> of the most recent tuples per key from <code>stream</code>
 are maintained when downstream processing is slow, any older tuples
 that have not been submitted to the returned stream will be discarded.
 <BR>
 Tuple order is maintained within a partition but is not guaranteed to
 be maintained across partitions.
 </P></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Tuple type.</dd>
<dd><code>K</code> - Key type.</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>stream</code> - Stream to be isolated from downstream processing.</dd>
<dd><code>keyFunction</code> - Function defining the key of each tuple.</dd>
<dd><code>count</code> - Maximum number of tuples to maintain when downstream processing is backing up.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Stream that is isolated from and thus relieves pressure on <code>stream</code>.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#isolate-org.apache.edgent.topology.TStream-int-"><code>isolate</code></a></dd>
</dl>
</li>
</ul>
<a name="isolate-org.apache.edgent.topology.TStream-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isolate</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;isolate(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
                                     boolean&nbsp;ordered)</pre>
<div class="block">Isolate upstream processing from downstream processing.
 <BR>
 Implementations may throw <code>OutOfMemoryExceptions</code> 
 if the processing against returned stream cannot keep up
 with the arrival rate of tuples on <code>stream</code>.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Tuple type</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>stream</code> - Stream to be isolated from downstream processing.</dd>
<dd><code>ordered</code> - <code>true</code> to maintain arrival order on the returned stream,
 <code>false</code> to not guaranteed arrival order.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Stream that is isolated from <code>stream</code>.</dd>
</dl>
</li>
</ul>
<a name="isolate-org.apache.edgent.topology.TStream-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isolate</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;isolate(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
                                     int&nbsp;queueCapacity)</pre>
<div class="block">Isolate upstream processing from downstream processing.
 <P>
 If the processing against the returned stream cannot keep up
 with the arrival rate of tuples on <code>stream</code>, upstream
 processing will block until there is space in the queue between
 the streams.
 </P><P>
 Processing of tuples occurs in the order they were received.
 </P></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Tuple type</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>stream</code> - Stream to be isolated from downstream processing.</dd>
<dd><code>queueCapacity</code> - size of the queue between <code>stream</code> and
        the returned stream.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Stream that is isolated from <code>stream</code>.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#pressureReliever-org.apache.edgent.topology.TStream-org.apache.edgent.function.Function-int-"><code>pressureReliever</code></a></dd>
</dl>
</li>
</ul>
<a name="concurrentMap-org.apache.edgent.topology.TStream-java.util.List-org.apache.edgent.function.Function-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>concurrentMap</h4>
<pre>public static&nbsp;&lt;T,U,R&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;R&gt;&nbsp;concurrentMap(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
                                               java.util.List&lt;<a href="../../../../../org/apache/edgent/function/Function.html" title="interface in org.apache.edgent.function">Function</a>&lt;T,U&gt;&gt;&nbsp;mappers,
                                               <a href="../../../../../org/apache/edgent/function/Function.html" title="interface in org.apache.edgent.function">Function</a>&lt;java.util.List&lt;U&gt;,R&gt;&nbsp;combiner)</pre>
<div class="block">Perform analytics concurrently.
 <P>
 This is a convenience function that calls
 <a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#concurrent-org.apache.edgent.topology.TStream-java.util.List-org.apache.edgent.function.Function-"><code>concurrent(TStream, List, Function)</code></a> after
 creating <code>pipeline</code> and <code>combiner</code> functions
 from the supplied <code>mappers</code> and <code>combiner</code> arguments.
 </P><P>
 That is, it is logically, if not exactly, the same as:
 </P>
 <pre><code>
 List&lt;Function&lt;TStream&lt;T&gt;,TStream&lt;U&gt;&gt;&gt; pipelines = new ArrayList&lt;&gt;();
 for (Function&lt;T,U&gt; mapper : mappers)
   pipelines.add(s -&gt; s.map(mapper));
 concurrent(stream, pipelines, combiner);
 </code></pre></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Tuple type on input stream.</dd>
<dd><code>U</code> - Tuple type generated by mappers.</dd>
<dd><code>R</code> - Tuple type of the result.</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>stream</code> - input stream</dd>
<dd><code>mappers</code> - functions to be run concurrently.  Each mapper MUST
                 return a non-null result.
                 A runtime error will be generated if a null result
                 is returned.</dd>
<dd><code>combiner</code> - function to create a result tuple from the list of
                 results from <code>mappers</code>.
                 The input list order is 1:1 with the <code>mappers</code> list.
                 I.e., list entry [0] is the result from mappers[0],
                 list entry [1] is the result from mappers[1], etc.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>result stream</dd>
</dl>
</li>
</ul>
<a name="concurrent-org.apache.edgent.topology.TStream-java.util.List-org.apache.edgent.function.Function-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>concurrent</h4>
<pre>public static&nbsp;&lt;T,U,R&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;R&gt;&nbsp;concurrent(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
                                            java.util.List&lt;<a href="../../../../../org/apache/edgent/function/Function.html" title="interface in org.apache.edgent.function">Function</a>&lt;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;,<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;U&gt;&gt;&gt;&nbsp;pipelines,
                                            <a href="../../../../../org/apache/edgent/function/Function.html" title="interface in org.apache.edgent.function">Function</a>&lt;java.util.List&lt;U&gt;,R&gt;&nbsp;combiner)</pre>
<div class="block">Perform analytics concurrently.
 <P>
 Process input tuples one at at time, invoking the specified
 analytics (<code>pipelines</code>) concurrently, combine the results,
 and then process the next input tuple in the same manner.
 </P><P>
 Logically, instead of doing this:
 </P>
 <pre><code>
 sensorReadings&lt;T&gt; -&gt; A1 -&gt; A2 -&gt; A3 -&gt; results&lt;R&gt;
 </code></pre>
 create a graph that's logically like this:
 <pre><code>
 - 
                      |-&gt; A1 -&gt;|
 sensorReadings&lt;T&gt; -&gt; |-&gt; A2 -&gt;| -&gt; results&lt;R&gt;
                      |-&gt; A3 -&gt;|
 
 </code></pre>
 more specifically a graph like this:
 <pre><code>
 -
           |-&gt; isolate(1) -&gt; pipeline1 -&gt; |
 stream -&gt; |-&gt; isolate(1) -&gt; pipeline2 -&gt; |-&gt; barrier(10) -&gt; combiner 
           |-&gt; isolate(1) -&gt; pipeline3 -&gt; |
                . . .
 </code></pre>
 <P>
 The typical use case for this is when an application has a collection
 of independent analytics to perform on each tuple and the analytics
 are sufficiently long running such that performing them concurrently
 is desired.
 </P><P>
 Note, this is in contrast to "parallel" stream processing,
 which in Java8 Streams and other contexts means processing multiple
 tuples in parallel, each on a replicated processing pipeline.
 </P><P>
 Threadsafety - one of the following must be true:
 </P>
 <ul>
 <li>the tuples from <code>stream</code> are threadsafe</li>
 <li>the <code>pipelines</code> do not modify the input tuples</li>
 <li>the <code>pipelines</code> provide their own synchronization controls
     to protect concurrent modifications of the input tuples</li>
 </ul>
 <P>
 Logically, a thread is allocated for each of the <code>pipelines</code>.
 The actual degree of concurrency may be <a href="../../../../../org/apache/edgent/topology/TopologyProvider.html" title="interface in org.apache.edgent.topology"><code>TopologyProvider</code></a> dependent.
 </P></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Tuple type on input stream.</dd>
<dd><code>U</code> - Tuple type generated by pipelines.</dd>
<dd><code>R</code> - Tuple type of the result.</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>stream</code> - input stream</dd>
<dd><code>pipelines</code> - a list of functions to add a pipeline to the topology.
                 Each <code>pipeline.apply()</code> is called with <code>stream</code>
                 as the input, yielding the pipeline's result stream.
                 For each input tuple, a pipeline MUST create exactly one output tuple.
                 Tuple flow into the pipelines will cease if that requirement
                 is not met.</dd>
<dd><code>combiner</code> - function to create a result tuple from the list of
                 results from <code>pipelines</code>.
                 The input tuple list's order is 1:1 with the <code>pipelines</code> list.
                 I.e., list entry [0] is the result from pipelines[0],
                 list entry [1] is the result from pipelines[1], etc.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>result stream</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#barrier-java.util.List-int-"><code>barrier</code></a></dd>
</dl>
</li>
</ul>
<a name="barrier-java.util.List-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>barrier</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;java.util.List&lt;T&gt;&gt;&nbsp;barrier(java.util.List&lt;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&gt;&nbsp;streams)</pre>
<div class="block">A tuple synchronization barrier.
 <P>
 Same as <code>barrier(others, 1)</code>
 </P></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Tuple type</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>streams</code> - input streams</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the output stream</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#barrier-java.util.List-int-"><code>barrier(List, int)</code></a></dd>
</dl>
</li>
</ul>
<a name="barrier-java.util.List-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>barrier</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;java.util.List&lt;T&gt;&gt;&nbsp;barrier(java.util.List&lt;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&gt;&nbsp;streams,
                                                     int&nbsp;queueCapacity)</pre>
<div class="block">A tuple synchronization barrier.
 <P>
 A barrier has n input streams with tuple type <code>T</code>
 and one output stream with tuple type <code>List&lt;T&gt;</code>.
 Once the barrier receives one tuple on each of its input streams,
 it generates an output tuple containing one tuple from each input stream.
 It then waits until it has received another tuple from each input stream.
 </P><P>
 Input stream 0's tuple is in the output tuple's list[0],
 stream 1's tuple in list[1], and so on.
 </P><P>
 The barrier's output stream is isolated from the input streams.
 </P><P>
 The barrier has a queue of size <code>queueCapacity</code> for each
 input stream.  When a tuple for an input stream is received it is
 added to its queue.  The stream will block if the queue is full.
 </P></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Type of the tuple.</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>streams</code> - the list of input streams</dd>
<dd><code>queueCapacity</code> - the size of each input stream's queue</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the output stream</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../org/apache/edgent/oplet/plumbing/Barrier.html" title="class in org.apache.edgent.oplet.plumbing"><code>Barrier</code></a></dd>
</dl>
</li>
</ul>
<a name="parallelMap-org.apache.edgent.topology.TStream-int-org.apache.edgent.function.ToIntFunction-org.apache.edgent.function.BiFunction-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>parallelMap</h4>
<pre>public static&nbsp;&lt;T,U&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;U&gt;&nbsp;parallelMap(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
                                           int&nbsp;width,
                                           <a href="../../../../../org/apache/edgent/function/ToIntFunction.html" title="interface in org.apache.edgent.function">ToIntFunction</a>&lt;T&gt;&nbsp;splitter,
                                           <a href="../../../../../org/apache/edgent/function/BiFunction.html" title="interface in org.apache.edgent.function">BiFunction</a>&lt;T,java.lang.Integer,U&gt;&nbsp;mapper)</pre>
<div class="block">Perform an analytic function on tuples in parallel.
 <P>
 Same as <code>parallel(stream, width, splitter, (s,ch) -&gt; s.map(t -&gt; mapper.apply(t, ch))</code>
 </P></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Input stream tuple type</dd>
<dd><code>U</code> - Result stream tuple type</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>stream</code> - input stream</dd>
<dd><code>splitter</code> - the tuple channel allocation function</dd>
<dd><code>mapper</code> - analytic function</dd>
<dd><code>width</code> - number of channels</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the unordered result stream</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#roundRobinSplitter-int-"><code>roundRobinSplitter</code></a>, 
<a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#concurrentMap-org.apache.edgent.topology.TStream-java.util.List-org.apache.edgent.function.Function-"><code>concurrentMap</code></a></dd>
</dl>
</li>
</ul>
<a name="parallel-org.apache.edgent.topology.TStream-int-org.apache.edgent.function.ToIntFunction-org.apache.edgent.function.BiFunction-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>parallel</h4>
<pre>public static&nbsp;&lt;T,R&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;R&gt;&nbsp;parallel(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
                                        int&nbsp;width,
                                        <a href="../../../../../org/apache/edgent/function/ToIntFunction.html" title="interface in org.apache.edgent.function">ToIntFunction</a>&lt;T&gt;&nbsp;splitter,
                                        <a href="../../../../../org/apache/edgent/function/BiFunction.html" title="interface in org.apache.edgent.function">BiFunction</a>&lt;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;,java.lang.Integer,<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;R&gt;&gt;&nbsp;pipeline)</pre>
<div class="block">Perform an analytic pipeline on tuples in parallel.
 <P>
 Splits <code>stream</code> into <code>width</code> parallel processing channels,
 partitioning tuples among the channels using <code>splitter</code>.
 Each channel runs a copy of <code>pipeline</code>.
 The resulting stream is isolated from the upstream parallel channels.
 </P><P>
 The ordering of tuples in <code>stream</code> is not maintained in the
 results from <code>parallel</code>.
 </P><P>
 <code>pipeline</code> is not required to yield a result for each input
 tuple.
 </P><P>
 A common splitter function is a <a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#roundRobinSplitter-int-"><code>roundRobinSplitter</code></a>.
 </P><P>
 The generated graph looks like this:
 </P>
 <pre><code>
 -
                                    |-&gt; isolate(10) -&gt; pipeline-ch1 -&gt; |
 stream -&gt; split(width,splitter) -&gt; |-&gt; isolate(10) -&gt; pipeline-ch2 -&gt; |-&gt; union -&gt; isolate(width)
                                    |-&gt; isolate(10) -&gt; pipeline-ch3 -&gt; |
                                                . . .
 </code></pre></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Input stream tuple type</dd>
<dd><code>R</code> - Result stream tuple type</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>stream</code> - the input stream</dd>
<dd><code>width</code> - number of parallel processing channels</dd>
<dd><code>splitter</code> - the tuple channel allocation function</dd>
<dd><code>pipeline</code> - the pipeline for each channel.  
        <code>pipeline.apply(inputStream,channel)</code>
        is called to generate the pipeline for each channel.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the isolated unordered result from each parallel channel</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#roundRobinSplitter-int-"><code>roundRobinSplitter</code></a>, 
<a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#concurrent-org.apache.edgent.topology.TStream-java.util.List-org.apache.edgent.function.Function-"><code>concurrent</code></a></dd>
</dl>
</li>
</ul>
<a name="parallelBalanced-org.apache.edgent.topology.TStream-int-org.apache.edgent.function.BiFunction-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>parallelBalanced</h4>
<pre>public static&nbsp;&lt;T,R&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;R&gt;&nbsp;parallelBalanced(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
                                                int&nbsp;width,
                                                <a href="../../../../../org/apache/edgent/function/BiFunction.html" title="interface in org.apache.edgent.function">BiFunction</a>&lt;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;,java.lang.Integer,<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;R&gt;&gt;&nbsp;pipeline)</pre>
<div class="block">Perform an analytic pipeline on tuples in parallel.
 <P>
 Splits <code>stream</code> into <code>width</code> parallel processing channels,
 partitioning tuples among the channels in a load balanced fashion.
 Each channel runs a copy of <code>pipeline</code>.
 The resulting stream is isolated from the upstream parallel channels.
 </P><P>
 The ordering of tuples in <code>stream</code> is not maintained in the
 results from <code>parallel</code>.
 </P><P>
 A <code>pipeline</code> <b>MUST</b> yield a result for each input
 tuple.  Failure to do so will result in the channel remaining
 in a busy state and no longer available to process additional tuples.
 </P><P>
 A <a href="../../../../../org/apache/edgent/topology/plumbing/LoadBalancedSplitter.html" title="class in org.apache.edgent.topology.plumbing"><code>LoadBalancedSplitter</code></a> is used to distribute tuples.
 </P><P>
 The generated graph looks like this:
 </P>
 <pre><code>
 -
                                    |-&gt; isolate(1) -&gt; pipeline-ch1 -&gt; peek(splitter.channelDone()) -&gt; |
 stream -&gt; split(width,splitter) -&gt; |-&gt; isolate(1) -&gt; pipeline-ch2 -&gt; peek(splitter.channelDone()) -&gt; |-&gt; union -&gt; isolate(width)
                                    |-&gt; isolate(1) -&gt; pipeline-ch3 -&gt; peek(splitter.channelDone()) -&gt; |
                                                . . .
 </code></pre>
 <P>
 Note, this implementation requires that the splitter is used from
 only a single JVM.  The <a href="../../../../../org/apache/edgent/providers/direct/DirectProvider.html" title="class in org.apache.edgent.providers.direct"><code>DirectProvider</code></a>
 provider meets this requirement.
 </P></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Input stream tuple type</dd>
<dd><code>R</code> - Result stream tuple type</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>stream</code> - the input stream</dd>
<dd><code>width</code> - number of parallel processing channels</dd>
<dd><code>pipeline</code> - the pipeline for each channel.  
        <code>pipeline.apply(inputStream,channel)</code>
        is called to generate the pipeline for each channel.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the isolated unordered result from each parallel channel</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#parallel-org.apache.edgent.topology.TStream-int-org.apache.edgent.function.ToIntFunction-org.apache.edgent.function.BiFunction-"><code>parallel(TStream, int, ToIntFunction, BiFunction)</code></a>, 
<a href="../../../../../org/apache/edgent/topology/plumbing/LoadBalancedSplitter.html" title="class in org.apache.edgent.topology.plumbing"><code>LoadBalancedSplitter</code></a></dd>
</dl>
</li>
</ul>
<a name="roundRobinSplitter-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>roundRobinSplitter</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/function/ToIntFunction.html" title="interface in org.apache.edgent.function">ToIntFunction</a>&lt;T&gt;&nbsp;roundRobinSplitter(int&nbsp;width)</pre>
<div class="block">A round-robin splitter ToIntFunction
 <P>
 The splitter function cycles among the <code>width</code> channels
 on successive calls to <code>roundRobinSplitter.applyAsInt()</code>,
 returning <code>0, 1, ..., width-1, 0, 1, ..., width-1</code>.
 </P></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Tuple type</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>width</code> - number of splitter channels</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the splitter</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../org/apache/edgent/topology/TStream.html#split-int-org.apache.edgent.function.ToIntFunction-"><code>TStream.split</code></a>, 
<a href="../../../../../org/apache/edgent/topology/plumbing/PlumbingStreams.html#parallel-org.apache.edgent.topology.TStream-int-org.apache.edgent.function.ToIntFunction-org.apache.edgent.function.BiFunction-"><code>parallel</code></a></dd>
</dl>
</li>
</ul>
<a name="gate-org.apache.edgent.topology.TStream-java.util.concurrent.Semaphore-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>gate</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;gate(<a href="../../../../../org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology">TStream</a>&lt;T&gt;&nbsp;stream,
                                  java.util.concurrent.Semaphore&nbsp;semaphore)</pre>
<div class="block">Control the flow of tuples to an output stream.
 <P>
 A <code>Semaphore</code> is used to control the flow of tuples
 through the <code>gate</code>.
 The gate acquires a permit from the
 semaphore to pass the tuple through, blocking until a permit is
 acquired (and applying backpressure upstream while blocked).
 Elsewhere, some code calls <code>Semaphore.release(int)</code>
 to make permits available.
 </P><P>
 If a TopologyProvider is used that can distribute a topology's
 streams to different JVM's the gate and the code releasing the
 permits must be in the same JVM.
 </P><P>
 Sample use:
 <BR>
 Suppose you wanted to control processing such that concurrent
 pipelines processed each tuple in lock-step.
 I.e., You want all of the pipelines to start processing a tuple
 at the same time and not start a new tuple until the current
 tuple had been fully processed by each of them:
 </P>
 <pre><code>
 TStream&lt;Integer&gt; readings = ...;
 Semaphore gateControl = new Semaphore(1); // allow the first to pass through
 TStream&lt;Integer&gt; gated = PlumbingStreams.gate(readings, gateControl);
 
 // Create the concurrent pipeline combiner and have it
 // signal that concurrent processing of the tuple has completed.
 // In this sample the combiner just returns the received list of
 // each pipeline result.
 
 Function&lt;TStream&lt;List&lt;Integer&gt;&gt;,TStream&lt;List&lt;Integer&gt;&gt;&gt; combiner =
   stream -&gt; stream.map(list -&gt; {
       gateControl.release();
       return list;
     });
   
 TStream&lt;List&lt;Integer&gt;&gt; results = PlumbingStreams.concurrent(gated, pipelines, combiner);
 </code></pre></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Tuple type</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>stream</code> - the input stream</dd>
<dd><code>semaphore</code> - gate control</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>gated stream</dd>
</dl>
</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="class-use/PlumbingStreams.html">Use</a></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 class="aboutLanguage"><a href="http://edgent.incubator.apache.org">Apache Edgent (incubating)</a></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/edgent/topology/plumbing/LoadBalancedSplitter.html" title="class in org.apache.edgent.topology.plumbing"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/edgent/topology/plumbing/Valve.html" title="class in org.apache.edgent.topology.plumbing"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/edgent/topology/plumbing/PlumbingStreams.html" target="_top">Frames</a></li>
<li><a href="PlumbingStreams.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><a href="#constructor.summary">Constr</a>&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><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2017 The Apache Software Foundation. All Rights Reserved - 4744f56-20170226-1707</small></p>
</body>
</html>
