blob: 4d6e8eead33b283d2f676d5c012c0d0248222303 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>StreamReceiver (Qpid ProtonJ2 Parent 1.0.0-M18 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.qpid.protonj2.client, interface: StreamReceiver">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
</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="class-use/StreamReceiver.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../help-doc.html#class">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>Field&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>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</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.qpid.protonj2.client</a></div>
<h1 title="Interface StreamReceiver" class="title">Interface StreamReceiver</h1>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Superinterfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code>, <code><a href="Link.html" title="interface in org.apache.qpid.protonj2.client">Link</a>&lt;<a href="StreamReceiver.html" title="interface in org.apache.qpid.protonj2.client">StreamReceiver</a>&gt;</code></dd>
</dl>
<dl class="notes">
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="impl/ClientStreamReceiver.html" title="class in org.apache.qpid.protonj2.client.impl">ClientStreamReceiver</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">StreamReceiver</span><span class="extends-implements">
extends <a href="Link.html" title="interface in org.apache.qpid.protonj2.client">Link</a>&lt;<a href="StreamReceiver.html" title="interface in org.apache.qpid.protonj2.client">StreamReceiver</a>&gt;</span></div>
<div class="block">A receiver of large message content that is delivered in multiple <a href="../types/transport/Transfer.html" title="class in org.apache.qpid.protonj2.types.transport"><code>Transfer</code></a> frames from
the remote.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="StreamReceiver.html" title="interface in org.apache.qpid.protonj2.client">StreamReceiver</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#addCredit(int)" class="member-name-link">addCredit</a><wbr>(int&nbsp;credits)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Adds credit to the <a href="StreamReceiver.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiver</code></a> link for use when the receiver has not been configured
with a credit window.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/Future.html" title="class or interface in java.util.concurrent" class="external-link">Future</a>&lt;<a href="StreamReceiver.html" title="interface in org.apache.qpid.protonj2.client">StreamReceiver</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#drain()" class="member-name-link">drain</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Requests the remote to drain previously granted credit for this <a href="StreamReceiver.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiver</code></a> link.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>long</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#queuedDeliveries()" class="member-name-link">queuedDeliveries</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the number of Deliveries that are currently held in the <a href="Receiver.html" title="interface in org.apache.qpid.protonj2.client"><code>Receiver</code></a> delivery
queue.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="StreamDelivery.html" title="interface in org.apache.qpid.protonj2.client">StreamDelivery</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#receive()" class="member-name-link">receive</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Blocking receive method that waits forever for the remote to provide a <a href="StreamReceiverMessage.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiverMessage</code></a> for consumption.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="StreamDelivery.html" title="interface in org.apache.qpid.protonj2.client">StreamDelivery</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#receive(long,java.util.concurrent.TimeUnit)" class="member-name-link">receive</a><wbr>(long&nbsp;timeout,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/TimeUnit.html" title="class or interface in java.util.concurrent" class="external-link">TimeUnit</a>&nbsp;unit)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Blocking receive method that waits the given time interval for the remote to provide a
<a href="StreamReceiverMessage.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiverMessage</code></a> for consumption.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="StreamDelivery.html" title="interface in org.apache.qpid.protonj2.client">StreamDelivery</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#tryReceive()" class="member-name-link">tryReceive</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Non-blocking receive method that either returns a message is one is immediately available or
returns null if none is currently at hand.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.apache.qpid.protonj2.client.Link">Methods inherited from interface&nbsp;org.apache.qpid.protonj2.client.<a href="Link.html" title="interface in org.apache.qpid.protonj2.client">Link</a></h3>
<code><a href="Link.html#address()">address</a>, <a href="Link.html#client()">client</a>, <a href="Link.html#close()">close</a>, <a href="Link.html#close(org.apache.qpid.protonj2.client.ErrorCondition)">close</a>, <a href="Link.html#closeAsync()">closeAsync</a>, <a href="Link.html#closeAsync(org.apache.qpid.protonj2.client.ErrorCondition)">closeAsync</a>, <a href="Link.html#connection()">connection</a>, <a href="Link.html#desiredCapabilities()">desiredCapabilities</a>, <a href="Link.html#detach()">detach</a>, <a href="Link.html#detach(org.apache.qpid.protonj2.client.ErrorCondition)">detach</a>, <a href="Link.html#detachAsync()">detachAsync</a>, <a href="Link.html#detachAsync(org.apache.qpid.protonj2.client.ErrorCondition)">detachAsync</a>, <a href="Link.html#offeredCapabilities()">offeredCapabilities</a>, <a href="Link.html#openFuture()">openFuture</a>, <a href="Link.html#properties()">properties</a>, <a href="Link.html#session()">session</a>, <a href="Link.html#source()">source</a>, <a href="Link.html#target()">target</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="addCredit(int)">
<h3>addCredit</h3>
<div class="member-signature"><span class="return-type"><a href="StreamReceiver.html" title="interface in org.apache.qpid.protonj2.client">StreamReceiver</a></span>&nbsp;<span class="element-name">addCredit</span><wbr><span class="parameters">(int&nbsp;credits)</span>
throws <span class="exceptions"><a href="exceptions/ClientException.html" title="class in org.apache.qpid.protonj2.client.exceptions">ClientException</a></span></div>
<div class="block">Adds credit to the <a href="StreamReceiver.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiver</code></a> link for use when the receiver has not been configured
with a credit window. When credit window is configured credit replenishment is automatic and
calling this method will result in an exception indicating that the operation is invalid.
<p>
If the <a href="Receiver.html" title="interface in org.apache.qpid.protonj2.client"><code>Receiver</code></a> is draining and this method is called an exception will be thrown
to indicate that credit cannot be replenished until the remote has drained the existing link
credit.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>credits</code> - The number of credits to add to the <a href="Receiver.html" title="interface in org.apache.qpid.protonj2.client"><code>Receiver</code></a> link.</dd>
<dt>Returns:</dt>
<dd>this <a href="StreamReceiver.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiver</code></a> instance.</dd>
<dt>Throws:</dt>
<dd><code><a href="exceptions/ClientException.html" title="class in org.apache.qpid.protonj2.client.exceptions">ClientException</a></code> - if an error occurs while attempting to add new <a href="StreamReceiver.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiver</code></a> link credit.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="drain()">
<h3>drain</h3>
<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/Future.html" title="class or interface in java.util.concurrent" class="external-link">Future</a>&lt;<a href="StreamReceiver.html" title="interface in org.apache.qpid.protonj2.client">StreamReceiver</a>&gt;</span>&nbsp;<span class="element-name">drain</span>()
throws <span class="exceptions"><a href="exceptions/ClientException.html" title="class in org.apache.qpid.protonj2.client.exceptions">ClientException</a></span></div>
<div class="block">Requests the remote to drain previously granted credit for this <a href="StreamReceiver.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiver</code></a> link.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>a <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/Future.html" title="class or interface in java.util.concurrent" class="external-link"><code>Future</code></a> that will be completed when the remote drains this <a href="StreamReceiver.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiver</code></a> link.</dd>
<dt>Throws:</dt>
<dd><code><a href="exceptions/ClientException.html" title="class in org.apache.qpid.protonj2.client.exceptions">ClientException</a></code> - if an error occurs while attempting to drain the link credit.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="receive()">
<h3>receive</h3>
<div class="member-signature"><span class="return-type"><a href="StreamDelivery.html" title="interface in org.apache.qpid.protonj2.client">StreamDelivery</a></span>&nbsp;<span class="element-name">receive</span>()
throws <span class="exceptions"><a href="exceptions/ClientException.html" title="class in org.apache.qpid.protonj2.client.exceptions">ClientException</a></span></div>
<div class="block">Blocking receive method that waits forever for the remote to provide a <a href="StreamReceiverMessage.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiverMessage</code></a> for consumption.
<p>
Receive calls will only grant credit on their own if a credit window is configured in the
<a href="StreamReceiverOptions.html" title="class in org.apache.qpid.protonj2.client"><code>StreamReceiverOptions</code></a> which is done by default. If the client application has configured
no credit window than this method will not grant any credit when it enters the wait for new
incoming messages.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>a new <a href="Delivery.html" title="interface in org.apache.qpid.protonj2.client"><code>Delivery</code></a> received from the remote.</dd>
<dt>Throws:</dt>
<dd><code><a href="exceptions/ClientException.html" title="class in org.apache.qpid.protonj2.client.exceptions">ClientException</a></code> - if the <a href="StreamReceiver.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiver</code></a> or its parent is closed when the call to receive is made.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="receive(long,java.util.concurrent.TimeUnit)">
<h3>receive</h3>
<div class="member-signature"><span class="return-type"><a href="StreamDelivery.html" title="interface in org.apache.qpid.protonj2.client">StreamDelivery</a></span>&nbsp;<span class="element-name">receive</span><wbr><span class="parameters">(long&nbsp;timeout,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/TimeUnit.html" title="class or interface in java.util.concurrent" class="external-link">TimeUnit</a>&nbsp;unit)</span>
throws <span class="exceptions"><a href="exceptions/ClientException.html" title="class in org.apache.qpid.protonj2.client.exceptions">ClientException</a></span></div>
<div class="block">Blocking receive method that waits the given time interval for the remote to provide a
<a href="StreamReceiverMessage.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiverMessage</code></a> for consumption. The amount of time this method blocks is based on
the timeout value. If the timeout is negative then it blocks until a Delivery is received. If the
timeout is equal to zero then it will not block and simply return a <a href="StreamReceiverMessage.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiverMessage</code></a>
if one is available locally. If the timeout value is greater than zero then it blocks up to timeout
amount of time.
<p>
Receive calls will only grant credit on their own if a credit window is configured in the
<a href="StreamReceiverOptions.html" title="class in org.apache.qpid.protonj2.client"><code>StreamReceiverOptions</code></a> which is done by default. If the client application has not configured
a credit window or granted credit manually this method will not automatically grant any credit
when it enters the wait for a new incoming <a href="StreamReceiverMessage.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiverMessage</code></a>.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>timeout</code> - The timeout value used to control how long the receive method waits for a new <a href="Delivery.html" title="interface in org.apache.qpid.protonj2.client"><code>Delivery</code></a>.</dd>
<dd><code>unit</code> - The unit of time that the given timeout represents.</dd>
<dt>Returns:</dt>
<dd>a new <a href="StreamReceiverMessage.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiverMessage</code></a> received from the remote.</dd>
<dt>Throws:</dt>
<dd><code><a href="exceptions/ClientException.html" title="class in org.apache.qpid.protonj2.client.exceptions">ClientException</a></code> - if the <a href="StreamReceiver.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiver</code></a> or its parent is closed when the call to receive is made.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="tryReceive()">
<h3>tryReceive</h3>
<div class="member-signature"><span class="return-type"><a href="StreamDelivery.html" title="interface in org.apache.qpid.protonj2.client">StreamDelivery</a></span>&nbsp;<span class="element-name">tryReceive</span>()
throws <span class="exceptions"><a href="exceptions/ClientException.html" title="class in org.apache.qpid.protonj2.client.exceptions">ClientException</a></span></div>
<div class="block">Non-blocking receive method that either returns a message is one is immediately available or
returns null if none is currently at hand.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>a new <a href="StreamReceiverMessage.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiverMessage</code></a> received from the remote or null if no pending deliveries are available.</dd>
<dt>Throws:</dt>
<dd><code><a href="exceptions/ClientException.html" title="class in org.apache.qpid.protonj2.client.exceptions">ClientException</a></code> - if the <a href="StreamReceiver.html" title="interface in org.apache.qpid.protonj2.client"><code>StreamReceiver</code></a> or its parent is closed when the call to try to receive is made.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="queuedDeliveries()">
<h3>queuedDeliveries</h3>
<div class="member-signature"><span class="return-type">long</span>&nbsp;<span class="element-name">queuedDeliveries</span>()
throws <span class="exceptions"><a href="exceptions/ClientException.html" title="class in org.apache.qpid.protonj2.client.exceptions">ClientException</a></span></div>
<div class="block">Returns the number of Deliveries that are currently held in the <a href="Receiver.html" title="interface in org.apache.qpid.protonj2.client"><code>Receiver</code></a> delivery
queue. This number is likely to change immediately following the call as more deliveries
arrive but can be used to determine if any pending <a href="Delivery.html" title="interface in org.apache.qpid.protonj2.client"><code>Delivery</code></a> work is ready.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the number of deliveries that are currently buffered locally.</dd>
<dt>Throws:</dt>
<dd><code><a href="exceptions/ClientException.html" title="class in org.apache.qpid.protonj2.client.exceptions">ClientException</a></code> - if an error occurs while attempting to fetch the queue count.</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2023 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>