blob: 82763e9a60c434f7524ce334493614c7af514ef5 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>TransactionController (Qpid ProtonJ2 Parent 1.0.0-M9 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<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="TransactionController (Qpid ProtonJ2 Parent 1.0.0-M9 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/TransactionController.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="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.qpid.protonj2.engine</a></div>
<h2 title="Interface TransactionController" class="title">Interface TransactionController</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><code><a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine">Endpoint</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;</code></dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="impl/ProtonTransactionController.html" title="class in org.apache.qpid.protonj2.engine.impl">ProtonTransactionController</a></code></dd>
</dl>
<hr>
<pre>public interface <span class="typeNameLabel">TransactionController</span>
extends <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine">Endpoint</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;</pre>
<div class="block">Transaction Controller link that implements the mechanics of declaring and discharging
AMQP transactions. A <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a> is typically used at the client side
of an AMQP <a href="Link.html" title="interface in org.apache.qpid.protonj2.engine"><code>Link</code></a> to create <a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine"><code>Transaction</code></a> instances which the client application
will enlist its incoming and outgoing deliveries into.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addCapacityAvailableHandler(org.apache.qpid.protonj2.engine.EventHandler)">addCapacityAvailableHandler</a></span>&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&nbsp;handler)</code></th>
<td class="colLast">
<div class="block">Allows the caller to add an <a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine"><code>EventHandler</code></a> that will be signaled when the underlying
link for this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a> has been granted credit which would then allow for
transaction <a href="../types/transactions/Declared.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Declared</code></a> and <a href="../types/transactions/Discharge.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Discharge</code></a> commands to be sent to the remote Transactional
Resource.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#declare()">declare</a></span>()</code></th>
<td class="colLast">
<div class="block">Request that the remote <a href="TransactionManager.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionManager</code></a> declare a new transaction and
respond with a new transaction Id for that transaction.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#declare(org.apache.qpid.protonj2.engine.Transaction)">declare</a></span>&#8203;(<a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&nbsp;transaction)</code></th>
<td class="colLast">
<div class="block">Request that the remote <a href="TransactionManager.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionManager</code></a> declare a new transaction and
respond with a new transaction Id for that transaction.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#declaredHandler(org.apache.qpid.protonj2.engine.EventHandler)">declaredHandler</a></span>&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&gt;&nbsp;declaredEventHandler)</code></th>
<td class="colLast">
<div class="block">Called when the <a href="TransactionManager.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionManager</code></a> end of the link has responded to a previous
<a href="../types/transactions/Declare.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Declare</code></a> request and the transaction can now be used to enroll deliveries into the
active transaction.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#declareFailureHandler(org.apache.qpid.protonj2.engine.EventHandler)">declareFailureHandler</a></span>&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&gt;&nbsp;declareFailureEventHandler)</code></th>
<td class="colLast">
<div class="block">Called when the <a href="TransactionManager.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionManager</code></a> end of the link responds to a <a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine"><code>Transaction</code></a> declaration
with an <a href="../types/messaging/Rejected.html" title="class in org.apache.qpid.protonj2.types.messaging"><code>Rejected</code></a> outcome indicating that the transaction could not be successfully declared.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#discharge(org.apache.qpid.protonj2.engine.Transaction,boolean)">discharge</a></span>&#8203;(<a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&nbsp;transaction,
boolean&nbsp;failed)</code></th>
<td class="colLast">
<div class="block">Request that the remote <a href="TransactionManager.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionManager</code></a> discharge the given transaction and
with the specified failure state (true for failed).</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#dischargedHandler(org.apache.qpid.protonj2.engine.EventHandler)">dischargedHandler</a></span>&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&gt;&nbsp;dischargedEventHandler)</code></th>
<td class="colLast">
<div class="block">Called when the <a href="TransactionManager.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionManager</code></a> end of the link has responded to a previous
<a href="#discharge(org.apache.qpid.protonj2.engine.Transaction,boolean)"><code>discharge(Transaction, boolean)</code></a> request and the transaction has
been retired.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#dischargeFailureHandler(org.apache.qpid.protonj2.engine.EventHandler)">dischargeFailureHandler</a></span>&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&gt;&nbsp;dischargeFailureEventHandler)</code></th>
<td class="colLast">
<div class="block">Called when the <a href="TransactionManager.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionManager</code></a> end of the link has responded to a previous
<a href="#discharge(org.apache.qpid.protonj2.engine.Transaction,boolean)"><code>discharge(Transaction, boolean)</code></a> request and the transaction discharge
failed for some reason.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../types/transactions/Coordinator.html" title="class in org.apache.qpid.protonj2.types.transactions">Coordinator</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCoordinator()">getCoordinator</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the currently set Coordinator target for this <a href="Link.html" title="interface in org.apache.qpid.protonj2.engine"><code>Link</code></a>.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../types/transactions/Coordinator.html" title="class in org.apache.qpid.protonj2.types.transactions">Coordinator</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRemoteCoordinator()">getRemoteCoordinator</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the remote target <a href="../types/messaging/Terminus.html" title="interface in org.apache.qpid.protonj2.types.messaging"><code>Terminus</code></a> for this transaction controller which must be of type
<a href="../types/transactions/Coordinator.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Coordinator</code></a> or null if remote did not set a terminus.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../types/messaging/Source.html" title="class in org.apache.qpid.protonj2.types.messaging">Source</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRemoteSource()">getRemoteSource</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="../types/messaging/Source.html" title="class in org.apache.qpid.protonj2.types.messaging">Source</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSource()">getSource</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hasCapacity()">hasCapacity</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns <code>true</code> if the <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a> has capacity to send or buffer
and <a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine"><code>Transaction</code></a> command to <a href="../types/transactions/Declare.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Declare</code></a> or <a href="../types/transactions/Discharge.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Discharge</code></a>.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newTransaction()">newTransaction</a></span>()</code></th>
<td class="colLast">
<div class="block">Creates a new <a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine"><code>Transaction</code></a> instances that is returned in the <a href="TransactionState.html#IDLE"><code>TransactionState.IDLE</code></a> state
which can be populated with application specific attachments or assigned a linked resource prior to calling
the</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#parentEndpointClosedHandler(org.apache.qpid.protonj2.engine.EventHandler)">parentEndpointClosedHandler</a></span>&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&nbsp;handler)</code></th>
<td class="colLast">
<div class="block">Sets a <a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine"><code>EventHandler</code></a> for when the parent <a href="Session.html" title="interface in org.apache.qpid.protonj2.engine"><code>Session</code></a> or <a href="Connection.html" title="interface in org.apache.qpid.protonj2.engine"><code>Connection</code></a> of this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a>
is locally closed.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setCoordinator(org.apache.qpid.protonj2.types.transactions.Coordinator)">setCoordinator</a></span>&#8203;(<a href="../types/transactions/Coordinator.html" title="class in org.apache.qpid.protonj2.types.transactions">Coordinator</a>&nbsp;coordinator)</code></th>
<td class="colLast">
<div class="block">Sets the <a href="../types/transactions/Coordinator.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Coordinator</code></a> target to assign to the local end of this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a>.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setSource(org.apache.qpid.protonj2.types.messaging.Source)">setSource</a></span>&#8203;(<a href="../types/messaging/Source.html" title="class in org.apache.qpid.protonj2.types.messaging">Source</a>&nbsp;source)</code></th>
<td class="colLast">
<div class="block">Sets the <a href="../types/messaging/Source.html" title="class in org.apache.qpid.protonj2.types.messaging"><code>Source</code></a> to assign to the local end of this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a>.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Collection.html?is-external=true" title="class or interface in java.util" class="externalLink">Collection</a>&lt;<a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#transactions()">transactions</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns a list of <a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine"><code>Transaction</code></a> objects that are active within this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a> which
have not reached a terminal state meaning they have not been successfully discharged and have not failed in
either the <a href="../types/transactions/Declare.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Declare</code></a> phase or the <a href="../types/transactions/Discharge.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Discharge</code></a> phase.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.qpid.protonj2.engine.Endpoint">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.qpid.protonj2.engine.<a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine">Endpoint</a></h3>
<code><a href="Endpoint.html#close()">close</a>, <a href="Endpoint.html#closeHandler(org.apache.qpid.protonj2.engine.EventHandler)">closeHandler</a>, <a href="Endpoint.html#engineShutdownHandler(org.apache.qpid.protonj2.engine.EventHandler)">engineShutdownHandler</a>, <a href="Endpoint.html#getAttachments()">getAttachments</a>, <a href="Endpoint.html#getCondition()">getCondition</a>, <a href="Endpoint.html#getDesiredCapabilities()">getDesiredCapabilities</a>, <a href="Endpoint.html#getEngine()">getEngine</a>, <a href="Endpoint.html#getLinkedResource()">getLinkedResource</a>, <a href="Endpoint.html#getLinkedResource(java.lang.Class)">getLinkedResource</a>, <a href="Endpoint.html#getOfferedCapabilities()">getOfferedCapabilities</a>, <a href="Endpoint.html#getParent()">getParent</a>, <a href="Endpoint.html#getProperties()">getProperties</a>, <a href="Endpoint.html#getRemoteCondition()">getRemoteCondition</a>, <a href="Endpoint.html#getRemoteDesiredCapabilities()">getRemoteDesiredCapabilities</a>, <a href="Endpoint.html#getRemoteOfferedCapabilities()">getRemoteOfferedCapabilities</a>, <a href="Endpoint.html#getRemoteProperties()">getRemoteProperties</a>, <a href="Endpoint.html#isLocallyClosed()">isLocallyClosed</a>, <a href="Endpoint.html#isLocallyOpen()">isLocallyOpen</a>, <a href="Endpoint.html#isRemotelyClosed()">isRemotelyClosed</a>, <a href="Endpoint.html#isRemotelyOpen()">isRemotelyOpen</a>, <a href="Endpoint.html#localCloseHandler(org.apache.qpid.protonj2.engine.EventHandler)">localCloseHandler</a>, <a href="Endpoint.html#localOpenHandler(org.apache.qpid.protonj2.engine.EventHandler)">localOpenHandler</a>, <a href="Endpoint.html#open()">open</a>, <a href="Endpoint.html#openHandler(org.apache.qpid.protonj2.engine.EventHandler)">openHandler</a>, <a href="Endpoint.html#setCondition(org.apache.qpid.protonj2.types.transport.ErrorCondition)">setCondition</a>, <a href="Endpoint.html#setDesiredCapabilities(org.apache.qpid.protonj2.types.Symbol...)">setDesiredCapabilities</a>, <a href="Endpoint.html#setLinkedResource(java.lang.Object)">setLinkedResource</a>, <a href="Endpoint.html#setOfferedCapabilities(org.apache.qpid.protonj2.types.Symbol...)">setOfferedCapabilities</a>, <a href="Endpoint.html#setProperties(java.util.Map)">setProperties</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="hasCapacity()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasCapacity</h4>
<pre class="methodSignature">boolean&nbsp;hasCapacity()</pre>
<div class="block">Returns <code>true</code> if the <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a> has capacity to send or buffer
and <a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine"><code>Transaction</code></a> command to <a href="../types/transactions/Declare.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Declare</code></a> or <a href="../types/transactions/Discharge.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Discharge</code></a>. If no capacity then
a call to <a href="#declare()"><code>declare()</code></a> or to
<a href="#discharge(org.apache.qpid.protonj2.engine.Transaction,boolean)"><code>discharge(Transaction, boolean)</code></a> would throw an exception.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the controller will allow declaring or discharging a transaction at this time.</dd>
</dl>
</li>
</ul>
<a id="setSource(org.apache.qpid.protonj2.types.messaging.Source)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setSource</h4>
<pre class="methodSignature"><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&nbsp;setSource&#8203;(<a href="../types/messaging/Source.html" title="class in org.apache.qpid.protonj2.types.messaging">Source</a>&nbsp;source)
throws <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang" class="externalLink">IllegalStateException</a></pre>
<div class="block">Sets the <a href="../types/messaging/Source.html" title="class in org.apache.qpid.protonj2.types.messaging"><code>Source</code></a> to assign to the local end of this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a>.
Must be called during setup, i.e. before calling the <a href="Endpoint.html#open()"><code>Endpoint.open()</code></a> method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>source</code> - The <a href="../types/messaging/Source.html" title="class in org.apache.qpid.protonj2.types.messaging"><code>Source</code></a> that will be set on the local end of this transaction controller.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this transaction controller instance.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang" class="externalLink">IllegalStateException</a></code> - if the <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a> has already been opened.</dd>
</dl>
</li>
</ul>
<a id="getSource()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSource</h4>
<pre class="methodSignature"><a href="../types/messaging/Source.html" title="class in org.apache.qpid.protonj2.types.messaging">Source</a>&nbsp;getSource()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <a href="../types/messaging/Source.html" title="class in org.apache.qpid.protonj2.types.messaging"><code>Source</code></a> for the local end of this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a>.</dd>
</dl>
</li>
</ul>
<a id="setCoordinator(org.apache.qpid.protonj2.types.transactions.Coordinator)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCoordinator</h4>
<pre class="methodSignature"><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&nbsp;setCoordinator&#8203;(<a href="../types/transactions/Coordinator.html" title="class in org.apache.qpid.protonj2.types.transactions">Coordinator</a>&nbsp;coordinator)
throws <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang" class="externalLink">IllegalStateException</a></pre>
<div class="block">Sets the <a href="../types/transactions/Coordinator.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Coordinator</code></a> target to assign to the local end of this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a>.
Must be called during setup, i.e. before calling the <a href="Endpoint.html#open()"><code>Endpoint.open()</code></a> method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>coordinator</code> - The <a href="../types/transactions/Coordinator.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Coordinator</code></a> target that will be set on the local end of this transaction controller.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this transaction controller instance.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang" class="externalLink">IllegalStateException</a></code> - if the <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a> has already been opened.</dd>
</dl>
</li>
</ul>
<a id="getCoordinator()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCoordinator</h4>
<pre class="methodSignature"><a href="../types/transactions/Coordinator.html" title="class in org.apache.qpid.protonj2.types.transactions">Coordinator</a>&nbsp;getCoordinator()</pre>
<div class="block">Returns the currently set Coordinator target for this <a href="Link.html" title="interface in org.apache.qpid.protonj2.engine"><code>Link</code></a>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the link target <a href="../types/transactions/Coordinator.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Coordinator</code></a> for the local end of this link.</dd>
</dl>
</li>
</ul>
<a id="getRemoteSource()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRemoteSource</h4>
<pre class="methodSignature"><a href="../types/messaging/Source.html" title="class in org.apache.qpid.protonj2.types.messaging">Source</a>&nbsp;getRemoteSource()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the source <a href="../types/messaging/Source.html" title="class in org.apache.qpid.protonj2.types.messaging"><code>Source</code></a> for the remote end of this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a>.</dd>
</dl>
</li>
</ul>
<a id="getRemoteCoordinator()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRemoteCoordinator</h4>
<pre class="methodSignature"><a href="../types/transactions/Coordinator.html" title="class in org.apache.qpid.protonj2.types.transactions">Coordinator</a>&nbsp;getRemoteCoordinator()</pre>
<div class="block">Returns the remote target <a href="../types/messaging/Terminus.html" title="interface in org.apache.qpid.protonj2.types.messaging"><code>Terminus</code></a> for this transaction controller which must be of type
<a href="../types/transactions/Coordinator.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Coordinator</code></a> or null if remote did not set a terminus.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the remote coordinator <a href="../types/messaging/Terminus.html" title="interface in org.apache.qpid.protonj2.types.messaging"><code>Terminus</code></a> for the remote end of this link.</dd>
</dl>
</li>
</ul>
<a id="transactions()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>transactions</h4>
<pre class="methodSignature"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Collection.html?is-external=true" title="class or interface in java.util" class="externalLink">Collection</a>&lt;<a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&gt;&nbsp;transactions()</pre>
<div class="block">Returns a list of <a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine"><code>Transaction</code></a> objects that are active within this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a> which
have not reached a terminal state meaning they have not been successfully discharged and have not failed in
either the <a href="../types/transactions/Declare.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Declare</code></a> phase or the <a href="../types/transactions/Discharge.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Discharge</code></a> phase. If there are no transactions active within
this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a> this method returns an empty <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Collection.html?is-external=true" title="class or interface in java.util" class="externalLink"><code>Collection</code></a>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a list of Transactions that are allocated to this controller that have not reached a terminal state.</dd>
</dl>
</li>
</ul>
<a id="newTransaction()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newTransaction</h4>
<pre class="methodSignature"><a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&nbsp;newTransaction()</pre>
<div class="block">Creates a new <a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine"><code>Transaction</code></a> instances that is returned in the <a href="TransactionState.html#IDLE"><code>TransactionState.IDLE</code></a> state
which can be populated with application specific attachments or assigned a linked resource prior to calling
the</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a new <a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine"><code>Transaction</code></a> instance that can be correlated with later declared events.</dd>
</dl>
</li>
</ul>
<a id="declare()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>declare</h4>
<pre class="methodSignature"><a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&nbsp;declare()</pre>
<div class="block">Request that the remote <a href="TransactionManager.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionManager</code></a> declare a new transaction and
respond with a new transaction Id for that transaction. Upon successful declaration of
a new transaction the remote will respond and the <a href="#declaredHandler(org.apache.qpid.protonj2.engine.EventHandler)"><code>declaredHandler(EventHandler)</code></a>
event handler will be signaled.
This is a convenience method that is the same as first calling <a href="#newTransaction()"><code>newTransaction()</code></a>
and then passing the result of that to the <a href="#declare(org.apache.qpid.protonj2.engine.Transaction)"><code>declare(Transaction)</code></a> method.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a new <a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine"><code>Transaction</code></a> instance that can be correlated with later declared events.</dd>
</dl>
</li>
</ul>
<a id="declare(org.apache.qpid.protonj2.engine.Transaction)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>declare</h4>
<pre class="methodSignature"><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&nbsp;declare&#8203;(<a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&nbsp;transaction)</pre>
<div class="block">Request that the remote <a href="TransactionManager.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionManager</code></a> declare a new transaction and
respond with a new transaction Id for that transaction. Upon successful declaration of
a new transaction the remote will respond and the <a href="#declaredHandler(org.apache.qpid.protonj2.engine.EventHandler)"><code>declaredHandler(EventHandler)</code></a>
event handler will be signaled.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>transaction</code> - The <a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine"><code>Transaction</code></a> that is will be associated with the eventual declared transaction.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a></dd>
</dl>
</li>
</ul>
<a id="discharge(org.apache.qpid.protonj2.engine.Transaction,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>discharge</h4>
<pre class="methodSignature"><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&nbsp;discharge&#8203;(<a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&nbsp;transaction,
boolean&nbsp;failed)</pre>
<div class="block">Request that the remote <a href="TransactionManager.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionManager</code></a> discharge the given transaction and
with the specified failure state (true for failed). Upon successful declaration of
a new transaction the remote will respond and the <a href="#declaredHandler(org.apache.qpid.protonj2.engine.EventHandler)"><code>declaredHandler(EventHandler)</code></a>
event handler will be signaled.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>transaction</code> - The <a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine"><code>Transaction</code></a> that is being discharged.</dd>
<dd><code>failed</code> - boolean value indicating the the discharge indicates the transaction failed (rolled back).</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a></dd>
</dl>
</li>
</ul>
<a id="declaredHandler(org.apache.qpid.protonj2.engine.EventHandler)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>declaredHandler</h4>
<pre class="methodSignature"><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&nbsp;declaredHandler&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&gt;&nbsp;declaredEventHandler)</pre>
<div class="block">Called when the <a href="TransactionManager.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionManager</code></a> end of the link has responded to a previous
<a href="../types/transactions/Declare.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Declare</code></a> request and the transaction can now be used to enroll deliveries into the
active transaction.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>declaredEventHandler</code> - An <a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine"><code>EventHandler</code></a> that will act on the transaction declaration request.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a>.</dd>
</dl>
</li>
</ul>
<a id="declareFailureHandler(org.apache.qpid.protonj2.engine.EventHandler)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>declareFailureHandler</h4>
<pre class="methodSignature"><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&nbsp;declareFailureHandler&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&gt;&nbsp;declareFailureEventHandler)</pre>
<div class="block">Called when the <a href="TransactionManager.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionManager</code></a> end of the link responds to a <a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine"><code>Transaction</code></a> declaration
with an <a href="../types/messaging/Rejected.html" title="class in org.apache.qpid.protonj2.types.messaging"><code>Rejected</code></a> outcome indicating that the transaction could not be successfully declared.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>declareFailureEventHandler</code> - An <a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine"><code>EventHandler</code></a> that will be called when a previous transaction declaration fails.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a>.</dd>
</dl>
</li>
</ul>
<a id="dischargedHandler(org.apache.qpid.protonj2.engine.EventHandler)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dischargedHandler</h4>
<pre class="methodSignature"><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&nbsp;dischargedHandler&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&gt;&nbsp;dischargedEventHandler)</pre>
<div class="block">Called when the <a href="TransactionManager.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionManager</code></a> end of the link has responded to a previous
<a href="#discharge(org.apache.qpid.protonj2.engine.Transaction,boolean)"><code>discharge(Transaction, boolean)</code></a> request and the transaction has
been retired.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dischargedEventHandler</code> - An <a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine"><code>EventHandler</code></a> that will act on the transaction discharge request.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a>.</dd>
</dl>
</li>
</ul>
<a id="dischargeFailureHandler(org.apache.qpid.protonj2.engine.EventHandler)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dischargeFailureHandler</h4>
<pre class="methodSignature"><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&nbsp;dischargeFailureHandler&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Transaction.html" title="interface in org.apache.qpid.protonj2.engine">Transaction</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&gt;&nbsp;dischargeFailureEventHandler)</pre>
<div class="block">Called when the <a href="TransactionManager.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionManager</code></a> end of the link has responded to a previous
<a href="#discharge(org.apache.qpid.protonj2.engine.Transaction,boolean)"><code>discharge(Transaction, boolean)</code></a> request and the transaction discharge
failed for some reason.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dischargeFailureEventHandler</code> - An <a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine"><code>EventHandler</code></a> that will act on the transaction discharge failed event.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a>.</dd>
</dl>
</li>
</ul>
<a id="addCapacityAvailableHandler(org.apache.qpid.protonj2.engine.EventHandler)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addCapacityAvailableHandler</h4>
<pre class="methodSignature"><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&nbsp;addCapacityAvailableHandler&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&nbsp;handler)</pre>
<div class="block">Allows the caller to add an <a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine"><code>EventHandler</code></a> that will be signaled when the underlying
link for this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a> has been granted credit which would then allow for
transaction <a href="../types/transactions/Declared.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Declared</code></a> and <a href="../types/transactions/Discharge.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Discharge</code></a> commands to be sent to the remote Transactional
Resource.
If the controller already has credit to send then the handler will be invoked immediately otherwise
it will be stored until credit becomes available. Once a handler is signaled it is no longer retained
for future updates and the caller will need to register it again once more transactional work is to be
completed. Because more than one handler can be added at a time the caller should check again before
attempting to perform a transaction <a href="../types/transactions/Declared.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Declared</code></a> or <a href="../types/transactions/Discharge.html" title="class in org.apache.qpid.protonj2.types.transactions"><code>Discharge</code></a> is performed as other tasks
might have already consumed credit if work is done via some asynchronous mechanism.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>handler</code> - The <a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine"><code>EventHandler</code></a> that will be signaled once credit is available for transaction work.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a> instance.</dd>
</dl>
</li>
</ul>
<a id="parentEndpointClosedHandler(org.apache.qpid.protonj2.engine.EventHandler)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>parentEndpointClosedHandler</h4>
<pre class="methodSignature"><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&nbsp;parentEndpointClosedHandler&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a>&gt;&nbsp;handler)</pre>
<div class="block">Sets a <a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine"><code>EventHandler</code></a> for when the parent <a href="Session.html" title="interface in org.apache.qpid.protonj2.engine"><code>Session</code></a> or <a href="Connection.html" title="interface in org.apache.qpid.protonj2.engine"><code>Connection</code></a> of this <a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine"><code>TransactionController</code></a>
is locally closed.
Typically used by clients for logging or other state update event processing. Clients should not perform any
blocking calls within this context. It is an error for the handler to throw an exception and the outcome of
doing so is undefined.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>handler</code> - The <a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine"><code>EventHandler</code></a> to notify when this transaction controller's parent endpoint is locally closed.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the link for chaining.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/TransactionController.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="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>