<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.11) on Mon May 17 19:14:02 CDT 2021 -->
<title>EndPoint (Jetty :: Project 9.4.41.v20210516 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-05-17">
<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.5.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.41.v20210516 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"><p>EndPoint is the abstraction for an I/O channel that transports bytes.</p>

 <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>.</p>

 <h3>Reads</h3>
 <p>A <a href="../util/FutureCallback.html" title="class in org.eclipse.jetty.util"><code>FutureCallback</code></a> can be used to block until an endpoint is ready
 to fill bytes - the notification will be emitted by the NIO subsystem:</p>
 <pre>
 FutureCallback callback = new FutureCallback();
 endPoint.fillInterested(callback);

 // Blocks until read to fill bytes.
 callback.get();

 // Now bytes can be filled in a ByteBuffer.
 int filled = endPoint.fill(byteBuffer);
 </pre>

 <h3>Asynchronous Reads</h3>
 <p>A <a href="../util/Callback.html" title="interface in org.eclipse.jetty.util"><code>Callback</code></a> can be used to read asynchronously in its own dispatched
 thread:</p>
 <pre>
 endPoint.fillInterested(new Callback()
 {
   public void onSucceeded()
   {
     executor.execute(() -&gt;
     {
       // Fill bytes in a different thread.
       int filled = endPoint.fill(byteBuffer);
     });
   }
   public void onFailed(Throwable failure)
   {
     endPoint.close();
   }
 });
 </pre>

 <h3>Blocking Writes</h3>
 <p>The write contract is that the callback is completed when all the bytes
 have been written or there is a failure.
 Blocking writes look like this:</p>
 <pre>
 FutureCallback callback = new FutureCallback();
 endpoint.write(callback, headerBuffer, contentBuffer);

 // Blocks until the write succeeds or fails.
 future.get();
 </pre>
 <p>Note also that multiple buffers may be passed in <a href="#write(org.eclipse.jetty.util.Callback,java.nio.ByteBuffer...)"><code>write(Callback, ByteBuffer...)</code></a>
 so that gather writes can be performed for efficiency.</p></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 EndPoint 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 EndPoint 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">Upgrades this EndPoint from the current connection to the given new connection.</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>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether this EndPoint is open</dd>
</dl>
</li>
</ul>
<a id="getCreatedTimeStamp()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCreatedTimeStamp</h4>
<pre class="methodSignature">long&nbsp;getCreatedTimeStamp()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the epoch time in milliseconds when this EndPoint was created</dd>
</dl>
</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 EndPoint</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 EndPoint</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 EndPoint 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 EndPoint 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"><p>Upgrades this EndPoint from the current connection to the given new connection.</p>
 <p>Closes the current connection, links this EndPoint to the new connection and
 then opens the new connection.</p>
 <p>If the current connection is an instance of <a href="Connection.UpgradeFrom.html" title="interface in org.eclipse.jetty.io"><code>Connection.UpgradeFrom</code></a> then
 a buffer of unconsumed bytes is requested.
 If the buffer of unconsumed bytes is non-null and non-empty, then the new
 connection is tested: if it is an instance of <a href="Connection.UpgradeTo.html" title="interface in org.eclipse.jetty.io"><code>Connection.UpgradeTo</code></a>, then
 the unconsumed buffer is passed to the new connection; otherwise, an exception
 is thrown since there are unconsumed bytes that cannot be consumed by the new
 connection.</p></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;2021 <a href="https://webtide.com">Webtide</a>. All rights reserved.</small></p>
</footer>
</body>
</html>
