blob: 5709d8ac29dbf79e23ae1ee61e0d672a4453a15c [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.7) on Fri Jun 12 14:11:40 EDT 2020 -->
<title>SslConnection (Jetty :: Project 9.4.30.v20200611 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2020-06-12">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SslConnection (Jetty :: Project 9.4.30.v20200611 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":42,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":42,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</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/SslConnection.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</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><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a 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.eclipse.jetty.io.ssl</a></div>
<h2 title="Class SslConnection" class="title">Class SslConnection</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../AbstractConnection.html" title="class in org.eclipse.jetty.io">org.eclipse.jetty.io.AbstractConnection</a></li>
<li>
<ul class="inheritance">
<li>org.eclipse.jetty.io.ssl.SslConnection</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code>java.io.Closeable</code>, <code>java.lang.AutoCloseable</code>, <code><a href="../Connection.html" title="interface in org.eclipse.jetty.io">Connection</a></code>, <code><a href="../Connection.UpgradeTo.html" title="interface in org.eclipse.jetty.io">Connection.UpgradeTo</a></code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">SslConnection</span>
extends <a href="../AbstractConnection.html" title="class in org.eclipse.jetty.io">AbstractConnection</a>
implements <a href="../Connection.UpgradeTo.html" title="interface in org.eclipse.jetty.io">Connection.UpgradeTo</a></pre>
<div class="block">A Connection that acts as an interceptor between an EndPoint providing SSL encrypted data
and another consumer of an EndPoint (typically an <a href="../Connection.html" title="interface in org.eclipse.jetty.io"><code>Connection</code></a> like HttpConnection) that
wants unencrypted data.
<p>
The connector uses an <a href="../EndPoint.html" title="interface in org.eclipse.jetty.io"><code>EndPoint</code></a> (typically SocketChannelEndPoint) as
it's source/sink of encrypted data. It then provides an endpoint via <a href="#getDecryptedEndPoint()"><code>getDecryptedEndPoint()</code></a> to
expose a source/sink of unencrypted data to another connection (eg HttpConnection).
<p>
The design of this class is based on a clear separation between the passive methods, which do not block nor schedule any
asynchronous callbacks, and active methods that do schedule asynchronous callbacks.
<p>
The passive methods are <a href="SslConnection.DecryptedEndPoint.html#fill(java.nio.ByteBuffer)"><code>SslConnection.DecryptedEndPoint.fill(ByteBuffer)</code></a> and <a href="SslConnection.DecryptedEndPoint.html#flush(java.nio.ByteBuffer...)"><code>SslConnection.DecryptedEndPoint.flush(ByteBuffer...)</code></a>. They make best
effort attempts to progress the connection using only calls to the encrypted <a href="../EndPoint.html#fill(java.nio.ByteBuffer)"><code>EndPoint.fill(ByteBuffer)</code></a> and <a href="../EndPoint.html#flush(java.nio.ByteBuffer...)"><code>EndPoint.flush(ByteBuffer...)</code></a>
methods. They will never block nor schedule any readInterest or write callbacks. If a fill/flush cannot progress either because
of network congestion or waiting for an SSL handshake message, then the fill/flush will simply return with zero bytes filled/flushed.
Specifically, if a flush cannot proceed because it needs to receive a handshake message, then the flush will attempt to fill bytes from the
encrypted endpoint, but if insufficient bytes are read it will NOT call <a href="../EndPoint.html#fillInterested(org.eclipse.jetty.util.Callback)"><code>EndPoint.fillInterested(Callback)</code></a>.
<p>
It is only the active methods : <a href="../AbstractEndPoint.html#fillInterested(org.eclipse.jetty.util.Callback)"><code>AbstractEndPoint.fillInterested(Callback)</code></a> and
<a href="../AbstractEndPoint.html#write(org.eclipse.jetty.util.Callback,java.nio.ByteBuffer...)"><code>AbstractEndPoint.write(Callback, ByteBuffer...)</code></a> that may schedule callbacks by calling the encrypted
<a href="../EndPoint.html#fillInterested(org.eclipse.jetty.util.Callback)"><code>EndPoint.fillInterested(Callback)</code></a> and <a href="../EndPoint.html#write(org.eclipse.jetty.util.Callback,java.nio.ByteBuffer...)"><code>EndPoint.write(Callback, ByteBuffer...)</code></a>
methods. For normal data handling, the decrypted fillInterest method will result in an encrypted fillInterest and a decrypted
write will result in an encrypted write. However, due to SSL handshaking requirements, it is also possible for a decrypted fill
to call the encrypted write and for the decrypted flush to call the encrypted fillInterested methods.
<p>
MOST IMPORTANTLY, the encrypted callbacks from the active methods (#onFillable() and WriteFlusher#completeWrite()) do no filling or flushing
themselves. Instead they simple make the callbacks to the decrypted callbacks, so that the passive encrypted fill/flush will
be called again and make another best effort attempt to progress the connection.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="SslConnection.DecryptedEndPoint.html" title="class in org.eclipse.jetty.io.ssl">SslConnection.DecryptedEndPoint</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.org.eclipse.jetty.io.Connection">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.eclipse.jetty.io.<a href="../Connection.html" title="interface in org.eclipse.jetty.io">Connection</a></h3>
<code><a href="../Connection.Listener.html" title="interface in org.eclipse.jetty.io">Connection.Listener</a>, <a href="../Connection.UpgradeFrom.html" title="interface in org.eclipse.jetty.io">Connection.UpgradeFrom</a>, <a href="../Connection.UpgradeTo.html" title="interface in org.eclipse.jetty.io">Connection.UpgradeTo</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.eclipse.jetty.io.ByteBufferPool,java.util.concurrent.Executor,org.eclipse.jetty.io.EndPoint,javax.net.ssl.SSLEngine)">SslConnection</a></span>&#8203;(<a href="../ByteBufferPool.html" title="interface in org.eclipse.jetty.io">ByteBufferPool</a>&nbsp;byteBufferPool,
java.util.concurrent.Executor&nbsp;executor,
<a href="../EndPoint.html" title="interface in org.eclipse.jetty.io">EndPoint</a>&nbsp;endPoint,
javax.net.ssl.SSLEngine&nbsp;sslEngine)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.eclipse.jetty.io.ByteBufferPool,java.util.concurrent.Executor,org.eclipse.jetty.io.EndPoint,javax.net.ssl.SSLEngine,boolean,boolean)">SslConnection</a></span>&#8203;(<a href="../ByteBufferPool.html" title="interface in org.eclipse.jetty.io">ByteBufferPool</a>&nbsp;byteBufferPool,
java.util.concurrent.Executor&nbsp;executor,
<a href="../EndPoint.html" title="interface in org.eclipse.jetty.io">EndPoint</a>&nbsp;endPoint,
javax.net.ssl.SSLEngine&nbsp;sslEngine,
boolean&nbsp;useDirectBuffersForEncryption,
boolean&nbsp;useDirectBuffersForDecryption)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== 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="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated 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>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addHandshakeListener(org.eclipse.jetty.io.ssl.SslHandshakeListener)">addHandshakeListener</a></span>&#8203;(<a href="SslHandshakeListener.html" title="interface in org.eclipse.jetty.io.ssl">SslHandshakeListener</a>&nbsp;listener)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</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">Performs a logical close of this connection.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="SslConnection.DecryptedEndPoint.html" title="class in org.eclipse.jetty.io.ssl">SslConnection.DecryptedEndPoint</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getDecryptedEndPoint()">getDecryptedEndPoint</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRenegotiationLimit()">getRenegotiationLimit</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>javax.net.ssl.SSLEngine</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSSLEngine()">getSSLEngine</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isAllowMissingCloseMessage()">isAllowMissingCloseMessage</a></span>()</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">use inverted <a href="#isRequireCloseMessage()"><code>isRequireCloseMessage()</code></a> instead</div>
</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isRenegotiationAllowed()">isRenegotiationAllowed</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isRequireCloseMessage()">isRequireCloseMessage</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#networkFill(java.nio.ByteBuffer)">networkFill</a></span>&#8203;(java.nio.ByteBuffer&nbsp;input)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#networkFlush(java.nio.ByteBuffer)">networkFlush</a></span>&#8203;(java.nio.ByteBuffer&nbsp;output)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>protected <a href="SslConnection.DecryptedEndPoint.html" title="class in org.eclipse.jetty.io.ssl">SslConnection.DecryptedEndPoint</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newDecryptedEndPoint()">newDecryptedEndPoint</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onClose()">onClose</a></span>()</code></th>
<td class="colLast">
<div class="block">Callback method invoked when this connection is closed.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onFillable()">onFillable</a></span>()</code></th>
<td class="colLast">
<div class="block">Callback method invoked when the endpoint is ready to be read.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onFillInterestedFailed(java.lang.Throwable)">onFillInterestedFailed</a></span>&#8203;(java.lang.Throwable&nbsp;cause)</code></th>
<td class="colLast">
<div class="block">Callback method invoked when the endpoint failed to be ready to be read.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onIdleExpired()">onIdleExpired</a></span>()</code></th>
<td class="colLast">
<div class="block">Callback method invoked upon an idle timeout event.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onOpen()">onOpen</a></span>()</code></th>
<td class="colLast">
<div class="block">Callback method invoked when this connection is opened.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onUpgradeTo(java.nio.ByteBuffer)">onUpgradeTo</a></span>&#8203;(java.nio.ByteBuffer&nbsp;buffer)</code></th>
<td class="colLast">
<div class="block">Callback method invoked when this connection is upgraded.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#releaseDecryptedInputBuffer()">releaseDecryptedInputBuffer</a></span>()</code></th>
<td class="colLast">&nbsp;</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="#removeHandshakeListener(org.eclipse.jetty.io.ssl.SslHandshakeListener)">removeHandshakeListener</a></span>&#8203;(<a href="SslHandshakeListener.html" title="interface in org.eclipse.jetty.io.ssl">SslHandshakeListener</a>&nbsp;listener)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setAllowMissingCloseMessage(boolean)">setAllowMissingCloseMessage</a></span>&#8203;(boolean&nbsp;allowMissingCloseMessage)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">use inverted <a href="#setRequireCloseMessage(boolean)"><code>setRequireCloseMessage(boolean)</code></a> instead</div>
</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setRenegotiationAllowed(boolean)">setRenegotiationAllowed</a></span>&#8203;(boolean&nbsp;renegotiationAllowed)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setRenegotiationLimit(int)">setRenegotiationLimit</a></span>&#8203;(int&nbsp;renegotiationLimit)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setRequireCloseMessage(boolean)">setRequireCloseMessage</a></span>&#8203;(boolean&nbsp;requireCloseMessage)</code></th>
<td class="colLast">
<div class="block">Sets whether it is required that a peer send the TLS <code>close_notify</code> message
to indicate the will to close the connection, otherwise it may be interpreted as a
truncation attack.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toConnectionString()">toConnectionString</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>protected javax.net.ssl.SSLEngineResult</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unwrap(javax.net.ssl.SSLEngine,java.nio.ByteBuffer,java.nio.ByteBuffer)">unwrap</a></span>&#8203;(javax.net.ssl.SSLEngine&nbsp;sslEngine,
java.nio.ByteBuffer&nbsp;input,
java.nio.ByteBuffer&nbsp;output)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>protected javax.net.ssl.SSLEngineResult</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#wrap(javax.net.ssl.SSLEngine,java.nio.ByteBuffer%5B%5D,java.nio.ByteBuffer)">wrap</a></span>&#8203;(javax.net.ssl.SSLEngine&nbsp;sslEngine,
java.nio.ByteBuffer[]&nbsp;input,
java.nio.ByteBuffer&nbsp;output)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.eclipse.jetty.io.AbstractConnection">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.eclipse.jetty.io.<a href="../AbstractConnection.html" title="class in org.eclipse.jetty.io">AbstractConnection</a></h3>
<code><a href="../AbstractConnection.html#addListener(org.eclipse.jetty.io.Connection.Listener)">addListener</a>, <a href="../AbstractConnection.html#failedCallback(org.eclipse.jetty.util.Callback,java.lang.Throwable)">failedCallback</a>, <a href="../AbstractConnection.html#fillInterested()">fillInterested</a>, <a href="../AbstractConnection.html#getBytesIn()">getBytesIn</a>, <a href="../AbstractConnection.html#getBytesOut()">getBytesOut</a>, <a href="../AbstractConnection.html#getCreatedTimeStamp()">getCreatedTimeStamp</a>, <a href="../AbstractConnection.html#getEndPoint()">getEndPoint</a>, <a href="../AbstractConnection.html#getExecutor()">getExecutor</a>, <a href="../AbstractConnection.html#getInputBufferSize()">getInputBufferSize</a>, <a href="../AbstractConnection.html#getMessagesIn()">getMessagesIn</a>, <a href="../AbstractConnection.html#getMessagesOut()">getMessagesOut</a>, <a href="../AbstractConnection.html#isFillInterested()">isFillInterested</a>, <a href="../AbstractConnection.html#onReadTimeout(java.lang.Throwable)">onReadTimeout</a>, <a href="../AbstractConnection.html#removeListener(org.eclipse.jetty.io.Connection.Listener)">removeListener</a>, <a href="../AbstractConnection.html#setInputBufferSize(int)">setInputBufferSize</a>, <a href="../AbstractConnection.html#toString()">toString</a>, <a href="../AbstractConnection.html#tryFillInterested()">tryFillInterested</a>, <a href="../AbstractConnection.html#tryFillInterested(org.eclipse.jetty.util.Callback)">tryFillInterested</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(org.eclipse.jetty.io.ByteBufferPool,java.util.concurrent.Executor,org.eclipse.jetty.io.EndPoint,javax.net.ssl.SSLEngine)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SslConnection</h4>
<pre>public&nbsp;SslConnection&#8203;(<a href="../ByteBufferPool.html" title="interface in org.eclipse.jetty.io">ByteBufferPool</a>&nbsp;byteBufferPool,
java.util.concurrent.Executor&nbsp;executor,
<a href="../EndPoint.html" title="interface in org.eclipse.jetty.io">EndPoint</a>&nbsp;endPoint,
javax.net.ssl.SSLEngine&nbsp;sslEngine)</pre>
</li>
</ul>
<a id="&lt;init&gt;(org.eclipse.jetty.io.ByteBufferPool,java.util.concurrent.Executor,org.eclipse.jetty.io.EndPoint,javax.net.ssl.SSLEngine,boolean,boolean)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SslConnection</h4>
<pre>public&nbsp;SslConnection&#8203;(<a href="../ByteBufferPool.html" title="interface in org.eclipse.jetty.io">ByteBufferPool</a>&nbsp;byteBufferPool,
java.util.concurrent.Executor&nbsp;executor,
<a href="../EndPoint.html" title="interface in org.eclipse.jetty.io">EndPoint</a>&nbsp;endPoint,
javax.net.ssl.SSLEngine&nbsp;sslEngine,
boolean&nbsp;useDirectBuffersForEncryption,
boolean&nbsp;useDirectBuffersForDecryption)</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="addHandshakeListener(org.eclipse.jetty.io.ssl.SslHandshakeListener)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addHandshakeListener</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;addHandshakeListener&#8203;(<a href="SslHandshakeListener.html" title="interface in org.eclipse.jetty.io.ssl">SslHandshakeListener</a>&nbsp;listener)</pre>
</li>
</ul>
<a id="removeHandshakeListener(org.eclipse.jetty.io.ssl.SslHandshakeListener)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeHandshakeListener</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;removeHandshakeListener&#8203;(<a href="SslHandshakeListener.html" title="interface in org.eclipse.jetty.io.ssl">SslHandshakeListener</a>&nbsp;listener)</pre>
</li>
</ul>
<a id="newDecryptedEndPoint()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newDecryptedEndPoint</h4>
<pre class="methodSignature">protected&nbsp;<a href="SslConnection.DecryptedEndPoint.html" title="class in org.eclipse.jetty.io.ssl">SslConnection.DecryptedEndPoint</a>&nbsp;newDecryptedEndPoint()</pre>
</li>
</ul>
<a id="getSSLEngine()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSSLEngine</h4>
<pre class="methodSignature">public&nbsp;javax.net.ssl.SSLEngine&nbsp;getSSLEngine()</pre>
</li>
</ul>
<a id="getDecryptedEndPoint()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDecryptedEndPoint</h4>
<pre class="methodSignature">public&nbsp;<a href="SslConnection.DecryptedEndPoint.html" title="class in org.eclipse.jetty.io.ssl">SslConnection.DecryptedEndPoint</a>&nbsp;getDecryptedEndPoint()</pre>
</li>
</ul>
<a id="isRenegotiationAllowed()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isRenegotiationAllowed</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isRenegotiationAllowed()</pre>
</li>
</ul>
<a id="setRenegotiationAllowed(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setRenegotiationAllowed</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setRenegotiationAllowed&#8203;(boolean&nbsp;renegotiationAllowed)</pre>
</li>
</ul>
<a id="getRenegotiationLimit()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRenegotiationLimit</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;getRenegotiationLimit()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The number of renegotiations allowed for this connection. When the limit
is 0 renegotiation will be denied. If the limit is less than 0 then no limit is applied.</dd>
</dl>
</li>
</ul>
<a id="setRenegotiationLimit(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setRenegotiationLimit</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setRenegotiationLimit&#8203;(int&nbsp;renegotiationLimit)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>renegotiationLimit</code> - The number of renegotiations allowed for this connection.
When the limit is 0 renegotiation will be denied. If the limit is less than 0 then no limit is applied.
Default -1.</dd>
</dl>
</li>
</ul>
<a id="isAllowMissingCloseMessage()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isAllowMissingCloseMessage</h4>
<pre class="methodSignature">@Deprecated
public&nbsp;boolean&nbsp;isAllowMissingCloseMessage()</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">use inverted <a href="#isRequireCloseMessage()"><code>isRequireCloseMessage()</code></a> instead</div>
</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether is not required that peers send the TLS <code>close_notify</code> message</dd>
</dl>
</li>
</ul>
<a id="setAllowMissingCloseMessage(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setAllowMissingCloseMessage</h4>
<pre class="methodSignature">@Deprecated
public&nbsp;void&nbsp;setAllowMissingCloseMessage&#8203;(boolean&nbsp;allowMissingCloseMessage)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">use inverted <a href="#setRequireCloseMessage(boolean)"><code>setRequireCloseMessage(boolean)</code></a> instead</div>
</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>allowMissingCloseMessage</code> - whether is not required that peers send the TLS <code>close_notify</code> message</dd>
</dl>
</li>
</ul>
<a id="isRequireCloseMessage()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isRequireCloseMessage</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isRequireCloseMessage()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether peers must send the TLS <code>close_notify</code> message</dd>
</dl>
</li>
</ul>
<a id="setRequireCloseMessage(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setRequireCloseMessage</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setRequireCloseMessage&#8203;(boolean&nbsp;requireCloseMessage)</pre>
<div class="block"><p>Sets whether it is required that a peer send the TLS <code>close_notify</code> message
to indicate the will to close the connection, otherwise it may be interpreted as a
truncation attack.</p>
<p>This option is only useful on clients, since typically servers cannot accept
connection-delimited content that may be truncated.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>requireCloseMessage</code> - whether peers must send the TLS <code>close_notify</code> message</dd>
</dl>
</li>
</ul>
<a id="onUpgradeTo(java.nio.ByteBuffer)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onUpgradeTo</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;onUpgradeTo&#8203;(java.nio.ByteBuffer&nbsp;buffer)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../Connection.UpgradeTo.html#onUpgradeTo(java.nio.ByteBuffer)">Connection.UpgradeTo</a></code></span></div>
<div class="block"><p>Callback method invoked when this connection is upgraded.</p>
<p>This must be called before <a href="../Connection.html#onOpen()"><code>Connection.onOpen()</code></a>.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../Connection.UpgradeTo.html#onUpgradeTo(java.nio.ByteBuffer)">onUpgradeTo</a></code>&nbsp;in interface&nbsp;<code><a href="../Connection.UpgradeTo.html" title="interface in org.eclipse.jetty.io">Connection.UpgradeTo</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>buffer</code> - An optional buffer that can contain prefilled data. Typically this
results from an upgrade of one protocol to the other where the old connection has buffered
data destined for the new connection. The new connection must take ownership of the buffer
and is responsible for returning it to the buffer pool</dd>
</dl>
</li>
</ul>
<a id="onOpen()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onOpen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;onOpen()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../Connection.html#onOpen()">Connection</a></code></span></div>
<div class="block"><p>Callback method invoked when this connection is opened.</p>
<p>Creators of the connection implementation are responsible for calling this method.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../Connection.html#onOpen()">onOpen</a></code>&nbsp;in interface&nbsp;<code><a href="../Connection.html" title="interface in org.eclipse.jetty.io">Connection</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../AbstractConnection.html#onOpen()">onOpen</a></code>&nbsp;in class&nbsp;<code><a href="../AbstractConnection.html" title="class in org.eclipse.jetty.io">AbstractConnection</a></code></dd>
</dl>
</li>
</ul>
<a id="onClose()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onClose</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;onClose()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../Connection.html#onClose()">Connection</a></code></span></div>
<div class="block"><p>Callback method invoked when this connection is closed.</p>
<p>Creators of the connection implementation are responsible for calling this method.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../Connection.html#onClose()">onClose</a></code>&nbsp;in interface&nbsp;<code><a href="../Connection.html" title="interface in org.eclipse.jetty.io">Connection</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../AbstractConnection.html#onClose()">onClose</a></code>&nbsp;in class&nbsp;<code><a href="../AbstractConnection.html" title="class in org.eclipse.jetty.io">AbstractConnection</a></code></dd>
</dl>
</li>
</ul>
<a id="close()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>close</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;close()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../Connection.html#close()">Connection</a></code></span></div>
<div class="block"><p>Performs a logical close of this connection.</p>
<p>For simple connections, this may just mean to delegate the close to the associated
<a href="../EndPoint.html" title="interface in org.eclipse.jetty.io"><code>EndPoint</code></a> but, for example, SSL connections should write the SSL close message
before closing the associated <a href="../EndPoint.html" title="interface in org.eclipse.jetty.io"><code>EndPoint</code></a>.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>close</code>&nbsp;in interface&nbsp;<code>java.lang.AutoCloseable</code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>close</code>&nbsp;in interface&nbsp;<code>java.io.Closeable</code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../Connection.html#close()">close</a></code>&nbsp;in interface&nbsp;<code><a href="../Connection.html" title="interface in org.eclipse.jetty.io">Connection</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../AbstractConnection.html#close()">close</a></code>&nbsp;in class&nbsp;<code><a href="../AbstractConnection.html" title="class in org.eclipse.jetty.io">AbstractConnection</a></code></dd>
</dl>
</li>
</ul>
<a id="onIdleExpired()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onIdleExpired</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;onIdleExpired()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../Connection.html#onIdleExpired()">Connection</a></code></span></div>
<div class="block"><p>Callback method invoked upon an idle timeout event.</p>
<p>Implementations of this method may return true to indicate that the idle timeout
handling should proceed normally, typically failing the EndPoint and causing it to
be closed.</p>
<p>When false is returned, the handling of the idle timeout event is halted
immediately and the EndPoint left in the state it was before the idle timeout event.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../Connection.html#onIdleExpired()">onIdleExpired</a></code>&nbsp;in interface&nbsp;<code><a href="../Connection.html" title="interface in org.eclipse.jetty.io">Connection</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../AbstractConnection.html#onIdleExpired()">onIdleExpired</a></code>&nbsp;in class&nbsp;<code><a href="../AbstractConnection.html" title="class in org.eclipse.jetty.io">AbstractConnection</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true to let the EndPoint handle the idle timeout,
false to tell the EndPoint to halt the handling of the idle timeout.</dd>
</dl>
</li>
</ul>
<a id="onFillable()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onFillable</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;onFillable()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../AbstractConnection.html#onFillable()">AbstractConnection</a></code></span></div>
<div class="block"><p>Callback method invoked when the endpoint is ready to be read.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../AbstractConnection.html#onFillable()">onFillable</a></code>&nbsp;in class&nbsp;<code><a href="../AbstractConnection.html" title="class in org.eclipse.jetty.io">AbstractConnection</a></code></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../AbstractConnection.html#fillInterested()"><code>AbstractConnection.fillInterested()</code></a></dd>
</dl>
</li>
</ul>
<a id="onFillInterestedFailed(java.lang.Throwable)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onFillInterestedFailed</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;onFillInterestedFailed&#8203;(java.lang.Throwable&nbsp;cause)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../AbstractConnection.html#onFillInterestedFailed(java.lang.Throwable)">AbstractConnection</a></code></span></div>
<div class="block"><p>Callback method invoked when the endpoint failed to be ready to be read.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../AbstractConnection.html#onFillInterestedFailed(java.lang.Throwable)">onFillInterestedFailed</a></code>&nbsp;in class&nbsp;<code><a href="../AbstractConnection.html" title="class in org.eclipse.jetty.io">AbstractConnection</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>cause</code> - the exception that caused the failure</dd>
</dl>
</li>
</ul>
<a id="wrap(javax.net.ssl.SSLEngine,java.nio.ByteBuffer[],java.nio.ByteBuffer)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>wrap</h4>
<pre class="methodSignature">protected&nbsp;javax.net.ssl.SSLEngineResult&nbsp;wrap&#8203;(javax.net.ssl.SSLEngine&nbsp;sslEngine,
java.nio.ByteBuffer[]&nbsp;input,
java.nio.ByteBuffer&nbsp;output)
throws javax.net.ssl.SSLException</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.net.ssl.SSLException</code></dd>
</dl>
</li>
</ul>
<a id="unwrap(javax.net.ssl.SSLEngine,java.nio.ByteBuffer,java.nio.ByteBuffer)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unwrap</h4>
<pre class="methodSignature">protected&nbsp;javax.net.ssl.SSLEngineResult&nbsp;unwrap&#8203;(javax.net.ssl.SSLEngine&nbsp;sslEngine,
java.nio.ByteBuffer&nbsp;input,
java.nio.ByteBuffer&nbsp;output)
throws javax.net.ssl.SSLException</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.net.ssl.SSLException</code></dd>
</dl>
</li>
</ul>
<a id="toConnectionString()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toConnectionString</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;toConnectionString()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../AbstractConnection.html#toConnectionString()">toConnectionString</a></code>&nbsp;in class&nbsp;<code><a href="../AbstractConnection.html" title="class in org.eclipse.jetty.io">AbstractConnection</a></code></dd>
</dl>
</li>
</ul>
<a id="releaseDecryptedInputBuffer()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>releaseDecryptedInputBuffer</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;releaseDecryptedInputBuffer()</pre>
</li>
</ul>
<a id="networkFill(java.nio.ByteBuffer)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>networkFill</h4>
<pre class="methodSignature">protected&nbsp;int&nbsp;networkFill&#8203;(java.nio.ByteBuffer&nbsp;input)
throws java.io.IOException</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a id="networkFlush(java.nio.ByteBuffer)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>networkFlush</h4>
<pre class="methodSignature">protected&nbsp;boolean&nbsp;networkFlush&#8203;(java.nio.ByteBuffer&nbsp;output)
throws java.io.IOException</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></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/SslConnection.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" 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><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 1995&#x2013;2020 <a href="https://webtide.com">Webtide</a>. All rights reserved.</small></p>
</footer>
</body>
</html>