<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>Endpoint (Qpid ProtonJ2 Parent 1.0.0-M6 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="Endpoint (Qpid ProtonJ2 Parent 1.0.0-M6 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,"i18":6,"i19":6,"i20":6,"i21":6,"i22":6,"i23":6,"i24":6,"i25":6,"i26":6,"i27":6,"i28":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/Endpoint.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 Endpoint" class="title">Interface Endpoint&lt;E extends Endpoint&lt;E&gt;&gt;</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>E</code> - The <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> type</dd>
</dl>
<dl>
<dt>All Known Subinterfaces:</dt>
<dd><code><a href="Connection.html" title="interface in org.apache.qpid.protonj2.engine">Connection</a></code>, <code><a href="Link.html" title="interface in org.apache.qpid.protonj2.engine">Link</a>&lt;L&gt;</code>, <code><a href="Receiver.html" title="interface in org.apache.qpid.protonj2.engine">Receiver</a></code>, <code><a href="Sender.html" title="interface in org.apache.qpid.protonj2.engine">Sender</a></code>, <code><a href="Session.html" title="interface in org.apache.qpid.protonj2.engine">Session</a></code>, <code><a href="TransactionController.html" title="interface in org.apache.qpid.protonj2.engine">TransactionController</a></code>, <code><a href="TransactionManager.html" title="interface in org.apache.qpid.protonj2.engine">TransactionManager</a></code></dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="impl/ProtonConnection.html" title="class in org.apache.qpid.protonj2.engine.impl">ProtonConnection</a></code>, <code><a href="impl/ProtonEndpoint.html" title="class in org.apache.qpid.protonj2.engine.impl">ProtonEndpoint</a></code>, <code><a href="impl/ProtonLink.html" title="class in org.apache.qpid.protonj2.engine.impl">ProtonLink</a></code>, <code><a href="impl/ProtonReceiver.html" title="class in org.apache.qpid.protonj2.engine.impl">ProtonReceiver</a></code>, <code><a href="impl/ProtonSender.html" title="class in org.apache.qpid.protonj2.engine.impl">ProtonSender</a></code>, <code><a href="impl/ProtonSession.html" title="class in org.apache.qpid.protonj2.engine.impl">ProtonSession</a></code>, <code><a href="impl/ProtonTransactionController.html" title="class in org.apache.qpid.protonj2.engine.impl">ProtonTransactionController</a></code>, <code><a href="impl/ProtonTransactionManager.html" title="class in org.apache.qpid.protonj2.engine.impl">ProtonTransactionManager</a></code></dd>
</dl>
<hr>
<pre>public interface <span class="typeNameLabel">Endpoint&lt;E extends Endpoint&lt;E&gt;&gt;</span></pre>
<div class="block">Represents a conceptual endpoint type used to provide common operations that
 all the endpoint types will share.</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="Endpoint.html" title="type parameter in Endpoint">E</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#close()">close</a></span>()</code></th>
<td class="colLast">
<div class="block">Close the end point locally and send the closing performative immediately if possible or
 holds it until the Connection / Engine state allows it.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="Endpoint.html" title="type parameter in Endpoint">E</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#closeHandler(org.apache.qpid.protonj2.engine.EventHandler)">closeHandler</a></span>&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Endpoint.html" title="type parameter in Endpoint">E</a>&gt;&nbsp;remoteCloseEventHandler)</code></th>
<td class="colLast">
<div class="block">Sets a EventHandler for when an AMQP Close frame is received from the remote peer.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="Endpoint.html" title="type parameter in Endpoint">E</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#engineShutdownHandler(org.apache.qpid.protonj2.engine.EventHandler)">engineShutdownHandler</a></span>&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Engine.html" title="interface in org.apache.qpid.protonj2.engine">Engine</a>&gt;&nbsp;engineShutdownEventHandler)</code></th>
<td class="colLast">
<div class="block">Sets an <a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine"><code>EventHandler</code></a> that is invoked when the engine that supports this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is shutdown
 via a call to <a href="Engine.html#shutdown()"><code>Engine.shutdown()</code></a> which indicates a desire to terminate all engine operations.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="Attachments.html" title="interface in org.apache.qpid.protonj2.engine">Attachments</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getAttachments()">getAttachments</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../types/transport/ErrorCondition.html" title="class in org.apache.qpid.protonj2.types.transport">ErrorCondition</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCondition()">getCondition</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getDesiredCapabilities()">getDesiredCapabilities</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="Engine.html" title="interface in org.apache.qpid.protonj2.engine">Engine</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getEngine()">getEngine</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>&lt;T&gt;&nbsp;T</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getLinkedResource()">getLinkedResource</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>&lt;T&gt;&nbsp;T</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getLinkedResource(java.lang.Class)">getLinkedResource</a></span>&#8203;(java.lang.Class&lt;T&gt;&nbsp;typeClass)</code></th>
<td class="colLast">
<div class="block">Gets the linked resource (if set) and returns it using the type information
 provided to cast the returned value.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOfferedCapabilities()">getOfferedCapabilities</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine">Endpoint</a>&lt;?&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getParent()">getParent</a></span>()</code></th>
<td class="colLast">
<div class="block">Gets the parent of this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> which can be itself for <a href="Connection.html" title="interface in org.apache.qpid.protonj2.engine"><code>Connection</code></a> instance.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>java.util.Map&lt;<a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>,&#8203;java.lang.Object&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getProperties()">getProperties</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="../types/transport/ErrorCondition.html" title="class in org.apache.qpid.protonj2.types.transport">ErrorCondition</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRemoteCondition()">getRemoteCondition</a></span>()</code></th>
<td class="colLast">
<div class="block">If the remote has closed this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> and provided an <a href="../types/transport/ErrorCondition.html" title="class in org.apache.qpid.protonj2.types.transport"><code>ErrorCondition</code></a> as part
 of the closing AMQP performative then this method will return it.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRemoteDesiredCapabilities()">getRemoteDesiredCapabilities</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRemoteOfferedCapabilities()">getRemoteOfferedCapabilities</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>java.util.Map&lt;<a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>,&#8203;java.lang.Object&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRemoteProperties()">getRemoteProperties</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isLocallyClosed()">isLocallyClosed</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns true if this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is currently locally closed meaning that a call to the
 <a href="#close()"><code>close()</code></a> method has occurred.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isLocallyOpen()">isLocallyOpen</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns true if this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is currently locally open meaning that the <a href="#open()"><code>open()</code></a>
 has been called but the <a href="#close()"><code>close()</code></a> has not.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isRemotelyClosed()">isRemotelyClosed</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns true if this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is currently remotely closed meaning that the AMQP performative
 that completes the close phase of this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a>'s lifetime has arrived.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isRemotelyOpen()">isRemotelyOpen</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns true if this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is currently remotely open meaning that the AMQP performative
 that completes the open phase of this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a>'s lifetime has arrived but the performative
 that closes it has not.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code><a href="Endpoint.html" title="type parameter in Endpoint">E</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#localCloseHandler(org.apache.qpid.protonj2.engine.EventHandler)">localCloseHandler</a></span>&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Endpoint.html" title="type parameter in Endpoint">E</a>&gt;&nbsp;localCloseHandler)</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 an this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is closed locally via a call to <a href="#close()"><code>close()</code></a>

 Typically used by clients for logging or other state update event processing.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code><a href="Endpoint.html" title="type parameter in Endpoint">E</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#localOpenHandler(org.apache.qpid.protonj2.engine.EventHandler)">localOpenHandler</a></span>&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Endpoint.html" title="type parameter in Endpoint">E</a>&gt;&nbsp;localOpenHandler)</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 an this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is opened locally via a call to <a href="#open()"><code>open()</code></a>

 Typically used by clients for logging or other state update event processing.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code><a href="Endpoint.html" title="type parameter in Endpoint">E</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#open()">open</a></span>()</code></th>
<td class="colLast">
<div class="block">Open the end point locally, sending the Open performative immediately if possible or holding
 it until SASL negotiations or the AMQP header exchange and other required performative exchanges
 has completed.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code><a href="Endpoint.html" title="type parameter in Endpoint">E</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#openHandler(org.apache.qpid.protonj2.engine.EventHandler)">openHandler</a></span>&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Endpoint.html" title="type parameter in Endpoint">E</a>&gt;&nbsp;remoteOpenEventHandler)</code></th>
<td class="colLast">
<div class="block">Sets a EventHandler for when an AMQP Open frame is received from the remote peer.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code><a href="Endpoint.html" title="type parameter in Endpoint">E</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setCondition(org.apache.qpid.protonj2.types.transport.ErrorCondition)">setCondition</a></span>&#8203;(<a href="../types/transport/ErrorCondition.html" title="class in org.apache.qpid.protonj2.types.transport">ErrorCondition</a>&nbsp;condition)</code></th>
<td class="colLast">
<div class="block">Sets the local <a href="../types/transport/ErrorCondition.html" title="class in org.apache.qpid.protonj2.types.transport"><code>ErrorCondition</code></a> to be applied to a <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> close.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code><a href="Endpoint.html" title="type parameter in Endpoint">E</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setDesiredCapabilities(org.apache.qpid.protonj2.types.Symbol...)">setDesiredCapabilities</a></span>&#8203;(<a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>...&nbsp;capabilities)</code></th>
<td class="colLast">
<div class="block">Sets the capabilities that are desired from the remote when this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is
 opened.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code><a href="Endpoint.html" title="type parameter in Endpoint">E</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setLinkedResource(java.lang.Object)">setLinkedResource</a></span>&#8203;(java.lang.Object&nbsp;resource)</code></th>
<td class="colLast">
<div class="block">Links a given resource to this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a>.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code><a href="Endpoint.html" title="type parameter in Endpoint">E</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setOfferedCapabilities(org.apache.qpid.protonj2.types.Symbol...)">setOfferedCapabilities</a></span>&#8203;(<a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>...&nbsp;capabilities)</code></th>
<td class="colLast">
<div class="block">Sets the capabilities to be offered on to the remote when this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is
 opened.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code><a href="Endpoint.html" title="type parameter in Endpoint">E</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setProperties(java.util.Map)">setProperties</a></span>&#8203;(java.util.Map&lt;<a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>,&#8203;java.lang.Object&gt;&nbsp;properties)</code></th>
<td class="colLast">
<div class="block">Sets the properties to be sent to the remote when this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is Opened.</div>
</td>
</tr>
</table>
</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="open()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>open</h4>
<pre class="methodSignature"><a href="Endpoint.html" title="type parameter in Endpoint">E</a>&nbsp;open()
throws <a href="exceptions/EngineStateException.html" title="class in org.apache.qpid.protonj2.engine.exceptions">EngineStateException</a></pre>
<div class="block">Open the end point locally, sending the Open performative immediately if possible or holding
 it until SASL negotiations or the AMQP header exchange and other required performative exchanges
 has completed.

 The end point will signal any registered handler of the remote opening the Connection
 once the remote performative that signals open completion arrives.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> instance.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="exceptions/EngineStateException.html" title="class in org.apache.qpid.protonj2.engine.exceptions">EngineStateException</a></code> - if an error occurs opening the Connection or the Engine is shutdown.</dd>
</dl>
</li>
</ul>
<a id="close()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>close</h4>
<pre class="methodSignature"><a href="Endpoint.html" title="type parameter in Endpoint">E</a>&nbsp;close()
 throws <a href="exceptions/EngineFailedException.html" title="class in org.apache.qpid.protonj2.engine.exceptions">EngineFailedException</a></pre>
<div class="block">Close the end point locally and send the closing performative immediately if possible or
 holds it until the Connection / Engine state allows it.  If the engine encounters an error writing
 the performative or the engine is in a failed state from a previous error then this method will
 throw an exception.  If the engine has been shutdown then this method will close out the local
 end of the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> and clean up any local resources before returning normally.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> instance.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="exceptions/EngineFailedException.html" title="class in org.apache.qpid.protonj2.engine.exceptions">EngineFailedException</a></code> - if an error occurs closing the end point or the Engine is in a failed state.</dd>
</dl>
</li>
</ul>
<a id="getAttachments()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAttachments</h4>
<pre class="methodSignature"><a href="Attachments.html" title="interface in org.apache.qpid.protonj2.engine">Attachments</a>&nbsp;getAttachments()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <a href="Attachments.html" title="interface in org.apache.qpid.protonj2.engine"><code>Attachments</code></a> instance that is associated with this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a></dd>
</dl>
</li>
</ul>
<a id="getEngine()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getEngine</h4>
<pre class="methodSignature"><a href="Engine.html" title="interface in org.apache.qpid.protonj2.engine">Engine</a>&nbsp;getEngine()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <a href="Engine.html" title="interface in org.apache.qpid.protonj2.engine"><code>Engine</code></a> which created this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> instance.</dd>
</dl>
</li>
</ul>
<a id="getParent()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParent</h4>
<pre class="methodSignature"><a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine">Endpoint</a>&lt;?&gt;&nbsp;getParent()</pre>
<div class="block">Gets the parent of this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> which can be itself for <a href="Connection.html" title="interface in org.apache.qpid.protonj2.engine"><code>Connection</code></a> instance.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the parent of this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> or itself if this is a <a href="Connection.html" title="interface in org.apache.qpid.protonj2.engine"><code>Connection</code></a>;</dd>
</dl>
</li>
</ul>
<a id="setLinkedResource(java.lang.Object)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setLinkedResource</h4>
<pre class="methodSignature"><a href="Endpoint.html" title="type parameter in Endpoint">E</a>&nbsp;setLinkedResource&#8203;(java.lang.Object&nbsp;resource)</pre>
<div class="block">Links a given resource to this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>resource</code> - The resource to link to this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> instance.</dd>
</dl>
</li>
</ul>
<a id="getLinkedResource()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLinkedResource</h4>
<pre class="methodSignature">&lt;T&gt;&nbsp;T&nbsp;getLinkedResource()</pre>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - The type that the linked resource should be cast to on return.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the user set linked resource for this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> instance.</dd>
</dl>
</li>
</ul>
<a id="getLinkedResource(java.lang.Class)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLinkedResource</h4>
<pre class="methodSignature">&lt;T&gt;&nbsp;T&nbsp;getLinkedResource&#8203;(java.lang.Class&lt;T&gt;&nbsp;typeClass)</pre>
<div class="block">Gets the linked resource (if set) and returns it using the type information
 provided to cast the returned value.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - The type to cast the linked resource to if one is set.</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>typeClass</code> - the type's Class which is used for casting the returned value.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the user set linked resource for this Context instance.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.ClassCastException</code> - if the linked resource cannot be cast to the type requested.</dd>
</dl>
</li>
</ul>
<a id="getCondition()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCondition</h4>
<pre class="methodSignature"><a href="../types/transport/ErrorCondition.html" title="class in org.apache.qpid.protonj2.types.transport">ErrorCondition</a>&nbsp;getCondition()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the local <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> error, or null if there is none</dd>
</dl>
</li>
</ul>
<a id="setCondition(org.apache.qpid.protonj2.types.transport.ErrorCondition)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCondition</h4>
<pre class="methodSignature"><a href="Endpoint.html" title="type parameter in Endpoint">E</a>&nbsp;setCondition&#8203;(<a href="../types/transport/ErrorCondition.html" title="class in org.apache.qpid.protonj2.types.transport">ErrorCondition</a>&nbsp;condition)</pre>
<div class="block">Sets the local <a href="../types/transport/ErrorCondition.html" title="class in org.apache.qpid.protonj2.types.transport"><code>ErrorCondition</code></a> to be applied to a <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> close.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>condition</code> - The error condition to convey to the remote peer on close of this end point.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> instance.</dd>
</dl>
</li>
</ul>
<a id="isLocallyOpen()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isLocallyOpen</h4>
<pre class="methodSignature">boolean&nbsp;isLocallyOpen()</pre>
<div class="block">Returns true if this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is currently locally open meaning that the <a href="#open()"><code>open()</code></a>
 has been called but the <a href="#close()"><code>close()</code></a> has not.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is locally open.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#isLocallyClosed()"><code>isLocallyClosed()</code></a></dd>
</dl>
</li>
</ul>
<a id="isLocallyClosed()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isLocallyClosed</h4>
<pre class="methodSignature">boolean&nbsp;isLocallyClosed()</pre>
<div class="block">Returns true if this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is currently locally closed meaning that a call to the
 <a href="#close()"><code>close()</code></a> method has occurred.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is locally closed.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#isLocallyOpen()"><code>isLocallyOpen()</code></a></dd>
</dl>
</li>
</ul>
<a id="setOfferedCapabilities(org.apache.qpid.protonj2.types.Symbol...)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setOfferedCapabilities</h4>
<pre class="methodSignature"><a href="Endpoint.html" title="type parameter in Endpoint">E</a>&nbsp;setOfferedCapabilities&#8203;(<a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>...&nbsp;capabilities)
                  throws java.lang.IllegalStateException</pre>
<div class="block">Sets the capabilities to be offered on to the remote when this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is
 opened.

 The offered capabilities value can only be modified prior to a call to <a href="#open()"><code>open()</code></a>,
 once the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> has been opened locally an error will be thrown if this method
 is called.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>capabilities</code> - The capabilities to be offered to the remote when the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is opened.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> instance.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - if the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> has already been opened.</dd>
</dl>
</li>
</ul>
<a id="getOfferedCapabilities()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOfferedCapabilities</h4>
<pre class="methodSignature"><a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>[]&nbsp;getOfferedCapabilities()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the configured capabilities that are offered to the remote when the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is opened.</dd>
</dl>
</li>
</ul>
<a id="setDesiredCapabilities(org.apache.qpid.protonj2.types.Symbol...)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setDesiredCapabilities</h4>
<pre class="methodSignature"><a href="Endpoint.html" title="type parameter in Endpoint">E</a>&nbsp;setDesiredCapabilities&#8203;(<a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>...&nbsp;capabilities)
                  throws java.lang.IllegalStateException</pre>
<div class="block">Sets the capabilities that are desired from the remote when this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is
 opened.

 The desired capabilities value can only be modified prior to a call to <a href="#open()"><code>open()</code></a>,
 once the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> has been opened locally an error will be thrown if this method
 is called.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>capabilities</code> - The capabilities desired from the remote when the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is opened.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> instance.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - if the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> has already been opened.</dd>
</dl>
</li>
</ul>
<a id="getDesiredCapabilities()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDesiredCapabilities</h4>
<pre class="methodSignature"><a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>[]&nbsp;getDesiredCapabilities()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the configured desired capabilities that are sent to the remote when the Connection is opened.</dd>
</dl>
</li>
</ul>
<a id="setProperties(java.util.Map)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setProperties</h4>
<pre class="methodSignature"><a href="Endpoint.html" title="type parameter in Endpoint">E</a>&nbsp;setProperties&#8203;(java.util.Map&lt;<a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>,&#8203;java.lang.Object&gt;&nbsp;properties)
         throws java.lang.IllegalStateException</pre>
<div class="block">Sets the properties to be sent to the remote when this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is Opened.

 The <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> properties value can only be modified prior to a call to <a href="#open()"><code>open()</code></a>,
 once the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> has been opened locally an error will be thrown if this method
 is called.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>properties</code> - The properties that will be sent to the remote when this Connection is opened.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> instance.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - if the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> has already been opened.</dd>
</dl>
</li>
</ul>
<a id="getProperties()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getProperties</h4>
<pre class="methodSignature">java.util.Map&lt;<a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>,&#8203;java.lang.Object&gt;&nbsp;getProperties()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the configured properties sent to the remote when this Connection is opened.</dd>
</dl>
</li>
</ul>
<a id="isRemotelyOpen()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isRemotelyOpen</h4>
<pre class="methodSignature">boolean&nbsp;isRemotelyOpen()</pre>
<div class="block">Returns true if this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is currently remotely open meaning that the AMQP performative
 that completes the open phase of this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a>'s lifetime has arrived but the performative
 that closes it has not.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is remotely open.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#isRemotelyClosed()"><code>isRemotelyClosed()</code></a></dd>
</dl>
</li>
</ul>
<a id="isRemotelyClosed()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isRemotelyClosed</h4>
<pre class="methodSignature">boolean&nbsp;isRemotelyClosed()</pre>
<div class="block">Returns true if this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is currently remotely closed meaning that the AMQP performative
 that completes the close phase of this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a>'s lifetime has arrived.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is remotely closed.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#isRemotelyOpen()"><code>isRemotelyOpen()</code></a></dd>
</dl>
</li>
</ul>
<a id="getRemoteCondition()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRemoteCondition</h4>
<pre class="methodSignature"><a href="../types/transport/ErrorCondition.html" title="class in org.apache.qpid.protonj2.types.transport">ErrorCondition</a>&nbsp;getRemoteCondition()</pre>
<div class="block">If the remote has closed this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> and provided an <a href="../types/transport/ErrorCondition.html" title="class in org.apache.qpid.protonj2.types.transport"><code>ErrorCondition</code></a> as part
 of the closing AMQP performative then this method will return it.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the remote supplied <a href="../types/transport/ErrorCondition.html" title="class in org.apache.qpid.protonj2.types.transport"><code>ErrorCondition</code></a>, or null if there is none.</dd>
</dl>
</li>
</ul>
<a id="getRemoteOfferedCapabilities()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRemoteOfferedCapabilities</h4>
<pre class="methodSignature"><a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>[]&nbsp;getRemoteOfferedCapabilities()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the capabilities offered by the remote when it opened its end of the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a>.</dd>
</dl>
</li>
</ul>
<a id="getRemoteDesiredCapabilities()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRemoteDesiredCapabilities</h4>
<pre class="methodSignature"><a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>[]&nbsp;getRemoteDesiredCapabilities()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the capabilities desired by the remote when it opened its end of the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a>.</dd>
</dl>
</li>
</ul>
<a id="getRemoteProperties()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRemoteProperties</h4>
<pre class="methodSignature">java.util.Map&lt;<a href="../types/Symbol.html" title="class in org.apache.qpid.protonj2.types">Symbol</a>,&#8203;java.lang.Object&gt;&nbsp;getRemoteProperties()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the properties sent by the remote when it opened its end of the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a>.</dd>
</dl>
</li>
</ul>
<a id="localOpenHandler(org.apache.qpid.protonj2.engine.EventHandler)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>localOpenHandler</h4>
<pre class="methodSignature"><a href="Endpoint.html" title="type parameter in Endpoint">E</a>&nbsp;localOpenHandler&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Endpoint.html" title="type parameter in Endpoint">E</a>&gt;&nbsp;localOpenHandler)</pre>
<div class="block">Sets a <a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine"><code>EventHandler</code></a> for when an this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is opened locally via a call to <a href="#open()"><code>open()</code></a>

 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>localOpenHandler</code> - The <a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine"><code>EventHandler</code></a> to notify when this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is locally opened.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> instance.</dd>
</dl>
</li>
</ul>
<a id="localCloseHandler(org.apache.qpid.protonj2.engine.EventHandler)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>localCloseHandler</h4>
<pre class="methodSignature"><a href="Endpoint.html" title="type parameter in Endpoint">E</a>&nbsp;localCloseHandler&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Endpoint.html" title="type parameter in Endpoint">E</a>&gt;&nbsp;localCloseHandler)</pre>
<div class="block">Sets a <a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine"><code>EventHandler</code></a> for when an this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is closed locally via a call to <a href="#close()"><code>close()</code></a>

 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>localCloseHandler</code> - The <a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine"><code>EventHandler</code></a> to notify when this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is locally closed.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> instance.</dd>
</dl>
</li>
</ul>
<a id="openHandler(org.apache.qpid.protonj2.engine.EventHandler)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>openHandler</h4>
<pre class="methodSignature"><a href="Endpoint.html" title="type parameter in Endpoint">E</a>&nbsp;openHandler&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Endpoint.html" title="type parameter in Endpoint">E</a>&gt;&nbsp;remoteOpenEventHandler)</pre>
<div class="block">Sets a EventHandler for when an AMQP Open frame is received from the remote peer.

 Used to process remotely initiated Connections. Locally initiated sessions have their own EventHandler
 invoked instead.  This method is typically used by servers to listen for the remote peer to open its
 <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a>, while a client would listen for the server to open its end of the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> once
 a local open has been performed.

 Typically used by clients as servers will typically listen to some parent resource event handler
 to determine if the remote is initiating a resource open.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>remoteOpenEventHandler</code> - the EventHandler that will be signaled when the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> has been remotely opened</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> instance.</dd>
</dl>
</li>
</ul>
<a id="closeHandler(org.apache.qpid.protonj2.engine.EventHandler)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>closeHandler</h4>
<pre class="methodSignature"><a href="Endpoint.html" title="type parameter in Endpoint">E</a>&nbsp;closeHandler&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Endpoint.html" title="type parameter in Endpoint">E</a>&gt;&nbsp;remoteCloseEventHandler)</pre>
<div class="block">Sets a EventHandler for when an AMQP Close frame is received from the remote peer.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>remoteCloseEventHandler</code> - the EventHandler that will be signaled when the <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is remotely closed.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> instance.</dd>
</dl>
</li>
</ul>
<a id="engineShutdownHandler(org.apache.qpid.protonj2.engine.EventHandler)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>engineShutdownHandler</h4>
<pre class="methodSignature"><a href="Endpoint.html" title="type parameter in Endpoint">E</a>&nbsp;engineShutdownHandler&#8203;(<a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine">EventHandler</a>&lt;<a href="Engine.html" title="interface in org.apache.qpid.protonj2.engine">Engine</a>&gt;&nbsp;engineShutdownEventHandler)</pre>
<div class="block">Sets an <a href="EventHandler.html" title="interface in org.apache.qpid.protonj2.engine"><code>EventHandler</code></a> that is invoked when the engine that supports this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> is shutdown
 via a call to <a href="Engine.html#shutdown()"><code>Engine.shutdown()</code></a> which indicates a desire to terminate all engine operations. Any
 <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> that has been both locally and remotely closed will not receive this event as it will no longer
 be tracked by the parent its parent <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a>.

 A typical use of this event would be from a locally closed <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> that is awaiting response from
 the remote.  If this event fires then there will never be a remote response to any pending operations and
 the client or server instance should react accordingly to clean up any related resources etc.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>engineShutdownEventHandler</code> - the EventHandler that will be signaled when this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a>'s engine is explicitly shutdown.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this <a href="Endpoint.html" title="interface in org.apache.qpid.protonj2.engine"><code>Endpoint</code></a> instance.</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/Endpoint.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>
