Class ProxyConnectionFactory.ProxyEndPoint
- java.lang.Object
-
- org.eclipse.jetty.util.AttributesMap
-
- org.eclipse.jetty.server.ProxyConnectionFactory.ProxyEndPoint
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
,EndPoint
,Attributes
,Dumpable
- Enclosing class:
- ProxyConnectionFactory
public static class ProxyConnectionFactory.ProxyEndPoint extends AttributesMap implements EndPoint
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.Attributes
Attributes.Wrapper
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Dumpable
Dumpable.DumpableContainer
-
-
Constructor Summary
Constructors Constructor Description ProxyEndPoint(EndPoint endp, java.net.InetSocketAddress remote, java.net.InetSocketAddress local)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Close any backing stream associated with the endpointint
fill(java.nio.ByteBuffer buffer)
Fill the passed buffer with data from this endpoint.void
fillInterested(Callback callback)
Requests callback methods to be invoked when a call toEndPoint.fill(ByteBuffer)
would return data or EOF.boolean
flush(java.nio.ByteBuffer... buffer)
Flush data from the passed header/buffer to this endpoint.Connection
getConnection()
long
getCreatedTimeStamp()
long
getIdleTimeout()
Get the max idle time in ms.java.net.InetSocketAddress
getLocalAddress()
java.net.InetSocketAddress
getRemoteAddress()
java.lang.Object
getTransport()
boolean
isFillInterested()
boolean
isInputShutdown()
Test if the input is shutdown.boolean
isOpen()
boolean
isOptimizedForDirectBuffers()
Is the endpoint optimized for DirectBuffer usageboolean
isOutputShutdown()
Test if output is shutdown.void
onClose()
Callback method invoked when this EndPoint is close.void
onOpen()
Callback method invoked when this EndPoint is opened.void
setConnection(Connection connection)
void
setIdleTimeout(long idleTimeout)
Set the idle timeout.void
shutdownOutput()
Shutdown the output.java.lang.String
toString()
boolean
tryFillInterested(Callback callback)
Requests callback methods to be invoked when a call toEndPoint.fill(ByteBuffer)
would return data or EOF.EndPoint
unwrap()
void
upgrade(Connection newConnection)
Upgrades this EndPoint from the current connection to the given new connection.void
write(Callback callback, java.nio.ByteBuffer... buffers)
Writes the given buffers viaEndPoint.flush(ByteBuffer...)
and invokes callback methods when either all the data has been flushed or an error occurs.-
Methods inherited from class org.eclipse.jetty.util.AttributesMap
addAll, clearAttributes, dump, dump, getAttribute, getAttributeEntrySet, getAttributeNames, getAttributeNamesCopy, getAttributeNameSet, removeAttribute, setAttribute, size
-
-
-
-
Constructor Detail
-
ProxyEndPoint
public ProxyEndPoint(EndPoint endp, java.net.InetSocketAddress remote, java.net.InetSocketAddress local)
-
-
Method Detail
-
unwrap
public EndPoint unwrap()
-
close
public void close()
Description copied from interface:EndPoint
Close any backing stream associated with the endpoint
-
fill
public int fill(java.nio.ByteBuffer buffer) throws java.io.IOException
Description copied from interface:EndPoint
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.- Specified by:
fill
in interfaceEndPoint
- Parameters:
buffer
- 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.- Returns:
- an
int
value indicating the number of bytes filled or -1 if EOF is read or the input is shutdown. - Throws:
java.io.IOException
- if the endpoint is closed.
-
fillInterested
public void fillInterested(Callback callback) throws java.nio.channels.ReadPendingException
Description copied from interface:EndPoint
Requests callback methods to be invoked when a call to
EndPoint.fill(ByteBuffer)
would return data or EOF.- Specified by:
fillInterested
in interfaceEndPoint
- Parameters:
callback
- the callback to call when an error occurs or we are readable. The callback may implement theInvocable
interface to self declare its blocking status. Non-blocking callbacks may be called more efficiently without dispatch delays.- Throws:
java.nio.channels.ReadPendingException
- if another read operation is concurrent.
-
flush
public boolean flush(java.nio.ByteBuffer... buffer) throws java.io.IOException
Description copied from interface:EndPoint
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.- Specified by:
flush
in interfaceEndPoint
- Parameters:
buffer
- the buffers to flush- Returns:
- True IFF all the buffers have been consumed and the endpoint has flushed the data to its destination (ie is not buffering any data).
- Throws:
java.io.IOException
- If the endpoint is closed or output is shutdown.
-
getConnection
public Connection getConnection()
- Specified by:
getConnection
in interfaceEndPoint
- Returns:
- the
Connection
associated with this EndPoint - See Also:
EndPoint.setConnection(Connection)
-
setConnection
public void setConnection(Connection connection)
- Specified by:
setConnection
in interfaceEndPoint
- Parameters:
connection
- theConnection
associated with this EndPoint- See Also:
EndPoint.getConnection()
,EndPoint.upgrade(Connection)
-
getCreatedTimeStamp
public long getCreatedTimeStamp()
- Specified by:
getCreatedTimeStamp
in interfaceEndPoint
- Returns:
- the epoch time in milliseconds when this EndPoint was created
-
getIdleTimeout
public long getIdleTimeout()
Description copied from interface:EndPoint
Get the max idle time in ms.The max idle time is the time the endpoint can be idle before extraordinary handling takes place.
- Specified by:
getIdleTimeout
in interfaceEndPoint
- Returns:
- the max idle time in ms or if ms <= 0 implies an infinite timeout
-
setIdleTimeout
public void setIdleTimeout(long idleTimeout)
Description copied from interface:EndPoint
Set the idle timeout.- Specified by:
setIdleTimeout
in interfaceEndPoint
- Parameters:
idleTimeout
- the idle timeout in MS. Timeout <= 0 implies an infinite timeout
-
getLocalAddress
public java.net.InetSocketAddress getLocalAddress()
- Specified by:
getLocalAddress
in interfaceEndPoint
- Returns:
- The local Inet address to which this
EndPoint
is bound, ornull
if thisEndPoint
does not represent a network connection.
-
getRemoteAddress
public java.net.InetSocketAddress getRemoteAddress()
- Specified by:
getRemoteAddress
in interfaceEndPoint
- Returns:
- The remote Inet address to which this
EndPoint
is bound, ornull
if thisEndPoint
does not represent a network connection.
-
getTransport
public java.lang.Object getTransport()
- Specified by:
getTransport
in interfaceEndPoint
- Returns:
- The underlying transport object (socket, channel, etc.)
-
isFillInterested
public boolean isFillInterested()
- Specified by:
isFillInterested
in interfaceEndPoint
- Returns:
- whether
EndPoint.fillInterested(Callback)
has been called, butEndPoint.fill(ByteBuffer)
has not yet been called
-
isInputShutdown
public boolean isInputShutdown()
Description copied from interface:EndPoint
Test if the input is shutdown. The input is shutdown if an EOF has been read while doing aEndPoint.fill(ByteBuffer)
. Once the input is shutdown, all calls toEndPoint.fill(ByteBuffer)
will return -1, until such time as the end point is close, when they will returnEofException
.- Specified by:
isInputShutdown
in interfaceEndPoint
- Returns:
- True if the input is shutdown or the endpoint is closed.
-
isOpen
public boolean isOpen()
-
isOptimizedForDirectBuffers
public boolean isOptimizedForDirectBuffers()
Description copied from interface:EndPoint
Is the endpoint optimized for DirectBuffer usage- Specified by:
isOptimizedForDirectBuffers
in interfaceEndPoint
- Returns:
- True if direct buffers can be used optimally.
-
isOutputShutdown
public boolean isOutputShutdown()
Description copied from interface:EndPoint
Test if output is shutdown. The output is shutdown by a call toEndPoint.shutdownOutput()
orEndPoint.close()
.- Specified by:
isOutputShutdown
in interfaceEndPoint
- Returns:
- true if the output is shutdown or the endpoint is closed.
-
onClose
public void onClose()
Description copied from interface:EndPoint
Callback method invoked when this EndPoint is close.
- Specified by:
onClose
in interfaceEndPoint
- See Also:
EndPoint.onOpen()
-
onOpen
public void onOpen()
Description copied from interface:EndPoint
Callback method invoked when this EndPoint is opened.
- Specified by:
onOpen
in interfaceEndPoint
- See Also:
EndPoint.onClose()
-
shutdownOutput
public void shutdownOutput()
Description copied from interface:EndPoint
Shutdown the output.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.
If the endpoint has
EndPoint.isInputShutdown()
true, then this call has the same effect asEndPoint.close()
.- Specified by:
shutdownOutput
in interfaceEndPoint
-
toString
public java.lang.String toString()
- Overrides:
toString
in classAttributesMap
-
tryFillInterested
public boolean tryFillInterested(Callback callback)
Description copied from interface:EndPoint
Requests callback methods to be invoked when a call to
EndPoint.fill(ByteBuffer)
would return data or EOF.- Specified by:
tryFillInterested
in interfaceEndPoint
- Parameters:
callback
- the callback to call when an error occurs or we are readable. The callback may implement theInvocable
interface to self declare its blocking status. Non-blocking callbacks may be called more efficiently without dispatch delays.- Returns:
- true if set
-
upgrade
public void upgrade(Connection newConnection)
Description copied from interface:EndPoint
Upgrades this EndPoint from the current connection to the given new connection.
Closes the current connection, links this EndPoint to the new connection and then opens the new connection.
If the current connection is an instance of
Connection.UpgradeFrom
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 ofConnection.UpgradeTo
, 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.
-
write
public void write(Callback callback, java.nio.ByteBuffer... buffers) throws java.nio.channels.WritePendingException
Description copied from interface:EndPoint
Writes the given buffers via
EndPoint.flush(ByteBuffer...)
and invokes callback methods when either all the data has been flushed or an error occurs.- Specified by:
write
in interfaceEndPoint
- Parameters:
callback
- the callback to call when an error occurs or the write completed. The callback may implement theInvocable
interface to self declare its blocking status. Non-blocking callbacks may be called more efficiently without dispatch delays.buffers
- one or moreByteBuffer
s that will be flushed.- Throws:
java.nio.channels.WritePendingException
- if another write operation is concurrent.
-
-