blob: 45c4355dc8a06d34e9447f470fd53e771abcc963 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>NextReceiverPolicy (Qpid ProtonJ2 Parent 1.0.0-M19 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, enum: NextReceiverPolicy">
<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/NextReceiverPolicy.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><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
<li>Field&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="Enum NextReceiverPolicy" class="title">Enum NextReceiverPolicy</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/11/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="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="NextReceiverPolicy.html" title="enum in org.apache.qpid.protonj2.client">NextReceiverPolicy</a>&gt;
<div class="inheritance">org.apache.qpid.protonj2.client.NextReceiverPolicy</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="NextReceiverPolicy.html" title="enum in org.apache.qpid.protonj2.client">NextReceiverPolicy</a>&gt;</code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public enum </span><span class="element-name type-name-label">NextReceiverPolicy</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="NextReceiverPolicy.html" title="enum in org.apache.qpid.protonj2.client">NextReceiverPolicy</a>&gt;</span></div>
<div class="block">Determines the behavior of a Session when the next receiver method is called
on that session. Each policy provides a contract on the ordering of returned
receivers from the next receiver API when there are receivers with locally
queued deliveries. When there are no <a href="Receiver.html" title="interface in org.apache.qpid.protonj2.client"><code>Receiver</code></a> instances that have
locally queued deliveries the next receive API will return the next receiver
to receive a complete incoming delivery unless a timeout was given and that
time period expires in which case it will return <code>null</code>.
<p>
Should the user perform receive calls on a <a href="Receiver.html" title="interface in org.apache.qpid.protonj2.client"><code>Receiver</code></a> directly in multiple
threads the behavior of the next receiver API is undefined and it becomes possible
that the resulting receiver returned from that API will have no actual pending
deliveries due to a race. In most cases the caller can mitigate some risk by using
the <a href="Receiver.html#tryReceive()"><code>Receiver.tryReceive()</code></a> API and accounting for a null result.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== ENUM CONSTANT SUMMARY =========== -->
<li>
<section class="constants-summary" id="enum-constant-summary">
<h2>Enum Constant Summary</h2>
<div class="caption"><span>Enum Constants</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Enum Constant</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code><a href="#FIRST_AVAILABLE" class="member-name-link">FIRST_AVAILABLE</a></code></div>
<div class="col-last even-row-color">
<div class="block">Examines the list of currently open receivers in the session and returns the
first receiver found with an available delivery.</div>
</div>
<div class="col-first odd-row-color"><code><a href="#LARGEST_BACKLOG" class="member-name-link">LARGEST_BACKLOG</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Examines the list of currently open receivers in the session and returns the
receiver with the largest backlog of available deliveries.</div>
</div>
<div class="col-first even-row-color"><code><a href="#RANDOM" class="member-name-link">RANDOM</a></code></div>
<div class="col-last even-row-color">
<div class="block">Examines the list of currently open receivers in the session and returns a
random selection from the set of receivers that have a pending delivery
immediately available.</div>
</div>
<div class="col-first odd-row-color"><code><a href="#ROUND_ROBIN" class="member-name-link">ROUND_ROBIN</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Examines the list of currently open receivers in the session and returns
the next receiver that has a pending delivery that follows the previously
returned receiver (if any) otherwise the first receiver in the session with
a pending delivery is returned.</div>
</div>
<div class="col-first even-row-color"><code><a href="#SMALLEST_BACKLOG" class="member-name-link">SMALLEST_BACKLOG</a></code></div>
<div class="col-last even-row-color">
<div class="block">Examines the list of currently open receivers in the session and returns the
receiver with the smallest backlog of available deliveries.</div>
</div>
</div>
</section>
</li>
<!-- ========== 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-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete 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-tab1 method-summary-table-tab4"><code>static <a href="NextReceiverPolicy.html" title="enum in org.apache.qpid.protonj2.client">NextReceiverPolicy</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns the enum constant of this type with the specified name.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="NextReceiverPolicy.html" title="enum in org.apache.qpid.protonj2.client">NextReceiverPolicy</a>[]</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns an array containing the constants of this enum type, in
the order they are declared.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Enum.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Enum.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></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/11/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/11/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/11/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/11/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/11/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/11/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/11/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">
<!-- ============ ENUM CONSTANT DETAIL =========== -->
<li>
<section class="constant-details" id="enum-constant-detail">
<h2>Enum Constant Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="ROUND_ROBIN">
<h3>ROUND_ROBIN</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="NextReceiverPolicy.html" title="enum in org.apache.qpid.protonj2.client">NextReceiverPolicy</a></span>&nbsp;<span class="element-name">ROUND_ROBIN</span></div>
<div class="block">Examines the list of currently open receivers in the session and returns
the next receiver that has a pending delivery that follows the previously
returned receiver (if any) otherwise the first receiver in the session with
a pending delivery is returned. The order of receivers returned will likely
be creation order however the implementation is not required to follow this
pattern so the caller should not be coded to rely on that ordering.</div>
</section>
</li>
<li>
<section class="detail" id="RANDOM">
<h3>RANDOM</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="NextReceiverPolicy.html" title="enum in org.apache.qpid.protonj2.client">NextReceiverPolicy</a></span>&nbsp;<span class="element-name">RANDOM</span></div>
<div class="block">Examines the list of currently open receivers in the session and returns a
random selection from the set of receivers that have a pending delivery
immediately available. This provides a means of selecting receivers which
is not prone to sticking to a highly active receiver which can starve out
other receivers which receive only limited traffic.</div>
</section>
</li>
<li>
<section class="detail" id="FIRST_AVAILABLE">
<h3>FIRST_AVAILABLE</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="NextReceiverPolicy.html" title="enum in org.apache.qpid.protonj2.client">NextReceiverPolicy</a></span>&nbsp;<span class="element-name">FIRST_AVAILABLE</span></div>
<div class="block">Examines the list of currently open receivers in the session and returns the
first receiver found with an available delivery. This can result in starvation
if that receiver has a continuous feed of new deliveries from the remote as it
will be repeatedly selected by the next receiver API.</div>
</section>
</li>
<li>
<section class="detail" id="LARGEST_BACKLOG">
<h3>LARGEST_BACKLOG</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="NextReceiverPolicy.html" title="enum in org.apache.qpid.protonj2.client">NextReceiverPolicy</a></span>&nbsp;<span class="element-name">LARGEST_BACKLOG</span></div>
<div class="block">Examines the list of currently open receivers in the session and returns the
receiver with the largest backlog of available deliveries. This can result in
starvation if that receiver has a continuous feed of new deliveries from the
remote as it will likely be repeatedly selected by the next receiver API.</div>
</section>
</li>
<li>
<section class="detail" id="SMALLEST_BACKLOG">
<h3>SMALLEST_BACKLOG</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="NextReceiverPolicy.html" title="enum in org.apache.qpid.protonj2.client">NextReceiverPolicy</a></span>&nbsp;<span class="element-name">SMALLEST_BACKLOG</span></div>
<div class="block">Examines the list of currently open receivers in the session and returns the
receiver with the smallest backlog of available deliveries.</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="values()">
<h3>values</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="NextReceiverPolicy.html" title="enum in org.apache.qpid.protonj2.client">NextReceiverPolicy</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
<div class="block">Returns an array containing the constants of this enum type, in
the order they are declared.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>an array containing the constants of this enum type, in the order they are declared</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="valueOf(java.lang.String)">
<h3>valueOf</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="NextReceiverPolicy.html" title="enum in org.apache.qpid.protonj2.client">NextReceiverPolicy</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
<div class="block">Returns the enum constant of this type with the specified name.
The string must match <i>exactly</i> an identifier used to declare an
enum constant in this type. (Extraneous whitespace characters are
not permitted.)</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>name</code> - the name of the enum constant to be returned.</dd>
<dt>Returns:</dt>
<dd>the enum constant with the specified name</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum type has no constant with the specified name</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</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; 2024 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>