blob: a197167a8246c77c87b33fb5781bdf5e3de86bfb [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>EndPoint (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="EndPoint (Jetty :: Project 9.4.30.v20200611 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};
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";
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/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="../../../../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>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.eclipse.jetty.io</a></div>
<h2 title="Interface EndPoint" class="title">Interface EndPoint</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><code>java.lang.AutoCloseable</code>, <code>java.io.Closeable</code></dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="AbstractEndPoint.html" title="class in org.eclipse.jetty.io">AbstractEndPoint</a></code>, <code><a href="ByteArrayEndPoint.html" title="class in org.eclipse.jetty.io">ByteArrayEndPoint</a></code>, <code><a href="ChannelEndPoint.html" title="class in org.eclipse.jetty.io">ChannelEndPoint</a></code>, <code><a href="../server/LocalConnector.LocalEndPoint.html" title="class in org.eclipse.jetty.server">LocalConnector.LocalEndPoint</a></code>, <code><a href="NetworkTrafficSelectChannelEndPoint.html" title="class in org.eclipse.jetty.io">NetworkTrafficSelectChannelEndPoint</a></code>, <code><a href="NetworkTrafficSocketChannelEndPoint.html" title="class in org.eclipse.jetty.io">NetworkTrafficSocketChannelEndPoint</a></code>, <code><a href="../server/ProxyConnectionFactory.ProxyEndPoint.html" title="class in org.eclipse.jetty.server">ProxyConnectionFactory.ProxyEndPoint</a></code>, <code><a href="SelectChannelEndPoint.html" title="class in org.eclipse.jetty.io">SelectChannelEndPoint</a></code>, <code><a href="SocketChannelEndPoint.html" title="class in org.eclipse.jetty.io">SocketChannelEndPoint</a></code>, <code><a href="ssl/SslConnection.DecryptedEndPoint.html" title="class in org.eclipse.jetty.io.ssl">SslConnection.DecryptedEndPoint</a></code>, <code><a href="../unixsocket/UnixSocketEndPoint.html" title="class in org.eclipse.jetty.unixsocket">UnixSocketEndPoint</a></code></dd>
</dl>
<hr>
<pre>public interface <span class="typeNameLabel">EndPoint</span>
extends java.io.Closeable</pre>
<div class="block">A transport EndPoint
<h3>Asynchronous Methods</h3>
<p>The asynchronous scheduling methods of <a href="EndPoint.html" title="interface in org.eclipse.jetty.io"><code>EndPoint</code></a>
has been influenced by NIO.2 Futures and Completion
handlers, but does not use those actual interfaces because they have
some inefficiencies.</p>
<p>This class will frequently be used in conjunction with some of the utility
implementations of <a href="../util/Callback.html" title="interface in org.eclipse.jetty.util"><code>Callback</code></a>, such as <a href="../util/FutureCallback.html" title="class in org.eclipse.jetty.util"><code>FutureCallback</code></a> and
<a href="../util/IteratingCallback.html" title="class in org.eclipse.jetty.util"><code>IteratingCallback</code></a>. Examples are:</p>
<h3>Blocking Read</h3>
<p>A FutureCallback can be used to block until an endpoint is ready to be filled
from:</p>
<blockquote><pre>
FutureCallback&lt;String&gt; future = new FutureCallback&lt;&gt;();
endpoint.fillInterested("ContextObj",future);
...
String context = future.get(); // This blocks
int filled=endpoint.fill(mybuffer);
</pre></blockquote>
<h3>Dispatched Read</h3>
<p>By using a different callback, the read can be done asynchronously in its own dispatched thread:</p>
<blockquote><pre>
endpoint.fillInterested("ContextObj",new ExecutorCallback&lt;String&gt;(executor)
{
public void onCompleted(String context)
{
int filled=endpoint.fill(mybuffer);
...
}
public void onFailed(String context,Throwable cause) {...}
});
</pre></blockquote>
<p>The executor callback can also be customized to not dispatch in some circumstances when
it knows it can use the callback thread and does not need to dispatch.</p>
<h3>Blocking Write</h3>
<p>The write contract is that the callback complete is not called until all data has been
written or there is a failure. For blocking this looks like:</p>
<blockquote><pre>
FutureCallback&lt;String&gt; future = new FutureCallback&lt;&gt;();
endpoint.write("ContextObj",future,headerBuffer,contentBuffer);
String context = future.get(); // This blocks
</pre></blockquote>
<h3>Dispatched Write</h3>
<p>Note also that multiple buffers may be passed in write so that gather writes
can be done:</p>
<blockquote><pre>
endpoint.write("ContextObj",new ExecutorCallback&lt;String&gt;(executor)
{
public void onCompleted(String context)
{
int filled=endpoint.fill(mybuffer);
...
}
public void onFailed(String context,Throwable cause) {...}
},headerBuffer,contentBuffer);
</pre></blockquote></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>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">Close any backing stream associated with the endpoint</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#fill(java.nio.ByteBuffer)">fill</a></span>&#8203;(java.nio.ByteBuffer&nbsp;buffer)</code></th>
<td class="colLast">
<div class="block">Fill the passed buffer with data from this endpoint.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#fillInterested(org.eclipse.jetty.util.Callback)">fillInterested</a></span>&#8203;(<a href="../util/Callback.html" title="interface in org.eclipse.jetty.util">Callback</a>&nbsp;callback)</code></th>
<td class="colLast">
<div class="block">Requests callback methods to be invoked when a call to <a href="#fill(java.nio.ByteBuffer)"><code>fill(ByteBuffer)</code></a> would return data or EOF.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#flush(java.nio.ByteBuffer...)">flush</a></span>&#8203;(java.nio.ByteBuffer...&nbsp;buffer)</code></th>
<td class="colLast">
<div class="block">Flush data from the passed header/buffer to this endpoint.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="Connection.html" title="interface in org.eclipse.jetty.io">Connection</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getConnection()">getConnection</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCreatedTimeStamp()">getCreatedTimeStamp</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getIdleTimeout()">getIdleTimeout</a></span>()</code></th>
<td class="colLast">
<div class="block">Get the max idle time in ms.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>java.net.InetSocketAddress</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getLocalAddress()">getLocalAddress</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>java.net.InetSocketAddress</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRemoteAddress()">getRemoteAddress</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTransport()">getTransport</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isFillInterested()">isFillInterested</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isInputShutdown()">isInputShutdown</a></span>()</code></th>
<td class="colLast">
<div class="block">Test if the input is shutdown.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isOpen()">isOpen</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isOptimizedForDirectBuffers()">isOptimizedForDirectBuffers</a></span>()</code></th>
<td class="colLast">
<div class="block">Is the endpoint optimized for DirectBuffer usage</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="#isOutputShutdown()">isOutputShutdown</a></span>()</code></th>
<td class="colLast">
<div class="block">Test if output is shutdown.</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="#onClose()">onClose</a></span>()</code></th>
<td class="colLast">
<div class="block">Callback method invoked when this <a href="EndPoint.html" title="interface in org.eclipse.jetty.io"><code>EndPoint</code></a> is close.</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="#onOpen()">onOpen</a></span>()</code></th>
<td class="colLast">
<div class="block">Callback method invoked when this <a href="EndPoint.html" title="interface in org.eclipse.jetty.io"><code>EndPoint</code></a> is opened.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setConnection(org.eclipse.jetty.io.Connection)">setConnection</a></span>&#8203;(<a href="Connection.html" title="interface in org.eclipse.jetty.io">Connection</a>&nbsp;connection)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setIdleTimeout(long)">setIdleTimeout</a></span>&#8203;(long&nbsp;idleTimeout)</code></th>
<td class="colLast">
<div class="block">Set the idle timeout.</div>
</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="#shutdownOutput()">shutdownOutput</a></span>()</code></th>
<td class="colLast">
<div class="block">Shutdown the output.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#tryFillInterested(org.eclipse.jetty.util.Callback)">tryFillInterested</a></span>&#8203;(<a href="../util/Callback.html" title="interface in org.eclipse.jetty.util">Callback</a>&nbsp;callback)</code></th>
<td class="colLast">
<div class="block">Requests callback methods to be invoked when a call to <a href="#fill(java.nio.ByteBuffer)"><code>fill(ByteBuffer)</code></a> would return data or EOF.</div>
</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="#upgrade(org.eclipse.jetty.io.Connection)">upgrade</a></span>&#8203;(<a href="Connection.html" title="interface in org.eclipse.jetty.io">Connection</a>&nbsp;newConnection)</code></th>
<td class="colLast">
<div class="block">Upgrade connections.</div>
</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="#write(org.eclipse.jetty.util.Callback,java.nio.ByteBuffer...)">write</a></span>&#8203;(<a href="../util/Callback.html" title="interface in org.eclipse.jetty.util">Callback</a>&nbsp;callback,
java.nio.ByteBuffer...&nbsp;buffers)</code></th>
<td class="colLast">
<div class="block">Writes the given buffers via <a href="#flush(java.nio.ByteBuffer...)"><code>flush(ByteBuffer...)</code></a> and invokes callback methods when either
all the data has been flushed or an error occurs.</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="getLocalAddress()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLocalAddress</h4>
<pre class="methodSignature">java.net.InetSocketAddress&nbsp;getLocalAddress()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The local Inet address to which this <code>EndPoint</code> is bound, or <code>null</code>
if this <code>EndPoint</code> does not represent a network connection.</dd>
</dl>
</li>
</ul>
<a id="getRemoteAddress()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRemoteAddress</h4>
<pre class="methodSignature">java.net.InetSocketAddress&nbsp;getRemoteAddress()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The remote Inet address to which this <code>EndPoint</code> is bound, or <code>null</code>
if this <code>EndPoint</code> does not represent a network connection.</dd>
</dl>
</li>
</ul>
<a id="isOpen()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isOpen</h4>
<pre class="methodSignature">boolean&nbsp;isOpen()</pre>
</li>
</ul>
<a id="getCreatedTimeStamp()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCreatedTimeStamp</h4>
<pre class="methodSignature">long&nbsp;getCreatedTimeStamp()</pre>
</li>
</ul>
<a id="shutdownOutput()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>shutdownOutput</h4>
<pre class="methodSignature">void&nbsp;shutdownOutput()</pre>
<div class="block">Shutdown the output.
<p>This call indicates that no more data will be sent on this endpoint that
that the remote end should read an EOF once all previously sent data has been
consumed. Shutdown may be done either at the TCP/IP level, as a protocol exchange (Eg
TLS close handshake) or both.
<p>
If the endpoint has <a href="#isInputShutdown()"><code>isInputShutdown()</code></a> true, then this call has the same effect
as <a href="#close()"><code>close()</code></a>.</div>
</li>
</ul>
<a id="isOutputShutdown()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isOutputShutdown</h4>
<pre class="methodSignature">boolean&nbsp;isOutputShutdown()</pre>
<div class="block">Test if output is shutdown.
The output is shutdown by a call to <a href="#shutdownOutput()"><code>shutdownOutput()</code></a>
or <a href="#close()"><code>close()</code></a>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the output is shutdown or the endpoint is closed.</dd>
</dl>
</li>
</ul>
<a id="isInputShutdown()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isInputShutdown</h4>
<pre class="methodSignature">boolean&nbsp;isInputShutdown()</pre>
<div class="block">Test if the input is shutdown.
The input is shutdown if an EOF has been read while doing
a <a href="#fill(java.nio.ByteBuffer)"><code>fill(ByteBuffer)</code></a>. Once the input is shutdown, all calls to
<a href="#fill(java.nio.ByteBuffer)"><code>fill(ByteBuffer)</code></a> will return -1, until such time as the
end point is close, when they will return <a href="EofException.html" title="class in org.eclipse.jetty.io"><code>EofException</code></a>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>True if the input is shutdown or the endpoint is closed.</dd>
</dl>
</li>
</ul>
<a id="close()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>close</h4>
<pre class="methodSignature">void&nbsp;close()</pre>
<div class="block">Close any backing stream associated with the endpoint</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>
</dl>
</li>
</ul>
<a id="fill(java.nio.ByteBuffer)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>fill</h4>
<pre class="methodSignature">int&nbsp;fill&#8203;(java.nio.ByteBuffer&nbsp;buffer)
throws java.io.IOException</pre>
<div class="block">Fill the passed buffer with data from this endpoint. The bytes are appended to any
data already in the buffer by writing from the buffers limit up to it's capacity.
The limit is updated to include the filled bytes.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>buffer</code> - The buffer to fill. The position and limit are modified during the fill. After the
operation, the position is unchanged and the limit is increased to reflect the new data filled.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an <code>int</code> value indicating the number of bytes
filled or -1 if EOF is read or the input is shutdown.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if the endpoint is closed.</dd>
</dl>
</li>
</ul>
<a id="flush(java.nio.ByteBuffer...)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>flush</h4>
<pre class="methodSignature">boolean&nbsp;flush&#8203;(java.nio.ByteBuffer...&nbsp;buffer)
throws java.io.IOException</pre>
<div class="block">Flush data from the passed header/buffer to this endpoint. As many bytes as can be consumed
are taken from the header/buffer position up until the buffer limit. The header/buffers position
is updated to indicate how many bytes have been consumed.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>buffer</code> - the buffers to flush</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>True IFF all the buffers have been consumed and the endpoint has flushed the data to its
destination (ie is not buffering any data).</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - If the endpoint is closed or output is shutdown.</dd>
</dl>
</li>
</ul>
<a id="getTransport()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTransport</h4>
<pre class="methodSignature">java.lang.Object&nbsp;getTransport()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The underlying transport object (socket, channel, etc.)</dd>
</dl>
</li>
</ul>
<a id="getIdleTimeout()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getIdleTimeout</h4>
<pre class="methodSignature">long&nbsp;getIdleTimeout()</pre>
<div class="block">Get the max idle time in ms.
<p>The max idle time is the time the endpoint can be idle before
extraordinary handling takes place.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the max idle time in ms or if ms &lt;= 0 implies an infinite timeout</dd>
</dl>
</li>
</ul>
<a id="setIdleTimeout(long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setIdleTimeout</h4>
<pre class="methodSignature">void&nbsp;setIdleTimeout&#8203;(long&nbsp;idleTimeout)</pre>
<div class="block">Set the idle timeout.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>idleTimeout</code> - the idle timeout in MS. Timeout &lt;= 0 implies an infinite timeout</dd>
</dl>
</li>
</ul>
<a id="fillInterested(org.eclipse.jetty.util.Callback)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>fillInterested</h4>
<pre class="methodSignature">void&nbsp;fillInterested&#8203;(<a href="../util/Callback.html" title="interface in org.eclipse.jetty.util">Callback</a>&nbsp;callback)
throws java.nio.channels.ReadPendingException</pre>
<div class="block"><p>Requests callback methods to be invoked when a call to <a href="#fill(java.nio.ByteBuffer)"><code>fill(ByteBuffer)</code></a> would return data or EOF.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>callback</code> - the callback to call when an error occurs or we are readable. The callback may implement the <a href="../util/thread/Invocable.html" title="interface in org.eclipse.jetty.util.thread"><code>Invocable</code></a> interface to
self declare its blocking status. Non-blocking callbacks may be called more efficiently without dispatch delays.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.nio.channels.ReadPendingException</code> - if another read operation is concurrent.</dd>
</dl>
</li>
</ul>
<a id="tryFillInterested(org.eclipse.jetty.util.Callback)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>tryFillInterested</h4>
<pre class="methodSignature">boolean&nbsp;tryFillInterested&#8203;(<a href="../util/Callback.html" title="interface in org.eclipse.jetty.util">Callback</a>&nbsp;callback)</pre>
<div class="block"><p>Requests callback methods to be invoked when a call to <a href="#fill(java.nio.ByteBuffer)"><code>fill(ByteBuffer)</code></a> would return data or EOF.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>callback</code> - the callback to call when an error occurs or we are readable. The callback may implement the <a href="../util/thread/Invocable.html" title="interface in org.eclipse.jetty.util.thread"><code>Invocable</code></a> interface to
self declare its blocking status. Non-blocking callbacks may be called more efficiently without dispatch delays.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if set</dd>
</dl>
</li>
</ul>
<a id="isFillInterested()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isFillInterested</h4>
<pre class="methodSignature">boolean&nbsp;isFillInterested()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether <a href="#fillInterested(org.eclipse.jetty.util.Callback)"><code>fillInterested(Callback)</code></a> has been called, but <a href="#fill(java.nio.ByteBuffer)"><code>fill(ByteBuffer)</code></a> has not yet
been called</dd>
</dl>
</li>
</ul>
<a id="write(org.eclipse.jetty.util.Callback,java.nio.ByteBuffer...)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>write</h4>
<pre class="methodSignature">void&nbsp;write&#8203;(<a href="../util/Callback.html" title="interface in org.eclipse.jetty.util">Callback</a>&nbsp;callback,
java.nio.ByteBuffer...&nbsp;buffers)
throws java.nio.channels.WritePendingException</pre>
<div class="block"><p>Writes the given buffers via <a href="#flush(java.nio.ByteBuffer...)"><code>flush(ByteBuffer...)</code></a> and invokes callback methods when either
all the data has been flushed or an error occurs.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>callback</code> - the callback to call when an error occurs or the write completed. The callback may implement the <a href="../util/thread/Invocable.html" title="interface in org.eclipse.jetty.util.thread"><code>Invocable</code></a> interface to
self declare its blocking status. Non-blocking callbacks may be called more efficiently without dispatch delays.</dd>
<dd><code>buffers</code> - one or more <code>ByteBuffer</code>s that will be flushed.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.nio.channels.WritePendingException</code> - if another write operation is concurrent.</dd>
</dl>
</li>
</ul>
<a id="getConnection()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConnection</h4>
<pre class="methodSignature"><a href="Connection.html" title="interface in org.eclipse.jetty.io">Connection</a>&nbsp;getConnection()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <a href="Connection.html" title="interface in org.eclipse.jetty.io"><code>Connection</code></a> associated with this <a href="EndPoint.html" title="interface in org.eclipse.jetty.io"><code>EndPoint</code></a></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#setConnection(org.eclipse.jetty.io.Connection)"><code>setConnection(Connection)</code></a></dd>
</dl>
</li>
</ul>
<a id="setConnection(org.eclipse.jetty.io.Connection)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setConnection</h4>
<pre class="methodSignature">void&nbsp;setConnection&#8203;(<a href="Connection.html" title="interface in org.eclipse.jetty.io">Connection</a>&nbsp;connection)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>connection</code> - the <a href="Connection.html" title="interface in org.eclipse.jetty.io"><code>Connection</code></a> associated with this <a href="EndPoint.html" title="interface in org.eclipse.jetty.io"><code>EndPoint</code></a></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#getConnection()"><code>getConnection()</code></a>,
<a href="#upgrade(org.eclipse.jetty.io.Connection)"><code>upgrade(Connection)</code></a></dd>
</dl>
</li>
</ul>
<a id="onOpen()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onOpen</h4>
<pre class="methodSignature">void&nbsp;onOpen()</pre>
<div class="block"><p>Callback method invoked when this <a href="EndPoint.html" title="interface in org.eclipse.jetty.io"><code>EndPoint</code></a> is opened.</p></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#onClose()"><code>onClose()</code></a></dd>
</dl>
</li>
</ul>
<a id="onClose()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onClose</h4>
<pre class="methodSignature">void&nbsp;onClose()</pre>
<div class="block"><p>Callback method invoked when this <a href="EndPoint.html" title="interface in org.eclipse.jetty.io"><code>EndPoint</code></a> is close.</p></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#onOpen()"><code>onOpen()</code></a></dd>
</dl>
</li>
</ul>
<a id="isOptimizedForDirectBuffers()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isOptimizedForDirectBuffers</h4>
<pre class="methodSignature">boolean&nbsp;isOptimizedForDirectBuffers()</pre>
<div class="block">Is the endpoint optimized for DirectBuffer usage</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>True if direct buffers can be used optimally.</dd>
</dl>
</li>
</ul>
<a id="upgrade(org.eclipse.jetty.io.Connection)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>upgrade</h4>
<pre class="methodSignature">void&nbsp;upgrade&#8203;(<a href="Connection.html" title="interface in org.eclipse.jetty.io">Connection</a>&nbsp;newConnection)</pre>
<div class="block">Upgrade connections.
Close the old connection, update the endpoint and open the new connection.
If the oldConnection is an instance of <a href="Connection.UpgradeFrom.html" title="interface in org.eclipse.jetty.io"><code>Connection.UpgradeFrom</code></a> then
a prefilled buffer is requested and passed to the newConnection if it is an instance
of <a href="Connection.UpgradeTo.html" title="interface in org.eclipse.jetty.io"><code>Connection.UpgradeTo</code></a></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>newConnection</code> - The connection to upgrade to</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="../../../../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>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; 1995&#x2013;2020 <a href="https://webtide.com">Webtide</a>. All rights reserved.</small></p>
</footer>
</body>
</html>