Package io.undertow.server
Class AbstractServerConnection
- java.lang.Object
-
- io.undertow.util.AbstractAttachable
-
- io.undertow.server.ServerConnection
-
- io.undertow.server.AbstractServerConnection
-
- All Implemented Interfaces:
Attachable,Closeable,AutoCloseable,Channel,InterruptibleChannel,org.xnio.channels.BoundChannel,org.xnio.channels.CloseableChannel,org.xnio.channels.Configurable,org.xnio.channels.ConnectedChannel
- Direct Known Subclasses:
AjpServerConnection,HttpServerConnection
public abstract class AbstractServerConnection extends ServerConnection
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classAbstractServerConnection.ConduitState-
Nested classes/interfaces inherited from class io.undertow.server.ServerConnection
ServerConnection.CloseListener
-
-
Field Summary
Fields Modifier and Type Field Description protected ByteBufferPoolbufferPoolprotected org.xnio.StreamConnectionchannelprotected List<ServerConnection.CloseListener>closeListenersprotected io.undertow.server.AbstractServerConnection.CloseSettercloseSetterprotected HttpServerExchangecurrentprotected PooledByteBufferextraBytesAny extra bytes that were read from the channel.protected org.xnio.conduits.StreamSinkConduitoriginalSinkConduitprotected org.xnio.conduits.StreamSourceConduitoriginalSourceConduitprotected HttpHandlerrootHandlerprotected org.xnio.OptionMapundertowOptions
-
Constructor Summary
Constructors Constructor Description AbstractServerConnection(org.xnio.StreamConnection channel, ByteBufferPool bufferPool, HttpHandler rootHandler, org.xnio.OptionMap undertowOptions, int bufferSize)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddCloseListener(ServerConnection.CloseListener listener)Adds a close listener, than will be invoked with the connection is closedvoidclearChannel()Resets the channel to its original state, effectively disabling all current conduit wrappers.voidclose()org.xnio.Pool<ByteBuffer>getBufferPool()intgetBufferSize()ByteBufferPoolgetByteBufferPool()Get the buffer pool for this connection.org.xnio.StreamConnectiongetChannel()Get the underlying channel.org.xnio.ChannelListener.Setter<ServerConnection>getCloseSetter()PooledByteBuffergetExtraBytes()org.xnio.XnioIoThreadgetIoThread()SocketAddressgetLocalAddress()<A extends SocketAddress>
AgetLocalAddress(Class<A> type)<T> TgetOption(org.xnio.Option<T> option)org.xnio.conduits.StreamSinkConduitgetOriginalSinkConduit()org.xnio.conduits.StreamSourceConduitgetOriginalSourceConduit()SocketAddressgetPeerAddress()Returns the actual address of the remote connection.<A extends SocketAddress>
AgetPeerAddress(Class<A> type)Returns the actual address of the remote connection.HttpHandlergetRootHandler()Get the root HTTP handler for this connection.protected org.xnio.conduits.ConduitStreamSinkChannelgetSinkChannel()protected org.xnio.conduits.ConduitStreamSourceChannelgetSourceChannel()org.xnio.OptionMapgetUndertowOptions()org.xnio.XnioWorkergetWorker()booleanisOpen()protected voidmaxEntitySizeUpdated(HttpServerExchange exchange)Callback that is invoked if the max entity size is updated.AbstractServerConnection.ConduitStateresetChannel()Resets the channel to its original state, effectively disabling all current conduit wrappers.voidrestoreChannel(AbstractServerConnection.ConduitState state)Restores the channel conduits to a previous state.voidsetExtraBytes(PooledByteBuffer extraBytes)<T> TsetOption(org.xnio.Option<T> option, T value)protected voidsetUpgradeListener(HttpUpgradeListener upgradeListener)protected static org.xnio.conduits.StreamSinkConduitsink(AbstractServerConnection.ConduitState state)protected static org.xnio.conduits.StreamSourceConduitsource(AbstractServerConnection.ConduitState state)booleansupportsOption(org.xnio.Option<?> option)-
Methods inherited from class io.undertow.server.ServerConnection
exchangeComplete, getId, getProtocolRequestId, getSinkConduit, getSslSession, getSslSessionInfo, getTransportProtocol, isConnectSupported, isContinueResponseSupported, isPushSupported, isRequestTrailerFieldsSupported, isUpgradeSupported, pushResource, pushResource, sendOutOfBandResponse, setConnectListener, setSslSessionInfo, terminateRequestChannel, upgradeChannel
-
Methods inherited from class io.undertow.util.AbstractAttachable
addToAttachmentList, createAttachmentMap, getAttachment, getAttachmentList, putAttachment, removeAttachment
-
-
-
-
Field Detail
-
channel
protected final org.xnio.StreamConnection channel
-
closeSetter
protected final io.undertow.server.AbstractServerConnection.CloseSetter closeSetter
-
bufferPool
protected final ByteBufferPool bufferPool
-
rootHandler
protected final HttpHandler rootHandler
-
undertowOptions
protected final org.xnio.OptionMap undertowOptions
-
originalSourceConduit
protected final org.xnio.conduits.StreamSourceConduit originalSourceConduit
-
originalSinkConduit
protected final org.xnio.conduits.StreamSinkConduit originalSinkConduit
-
closeListeners
protected final List<ServerConnection.CloseListener> closeListeners
-
current
protected HttpServerExchange current
-
extraBytes
protected PooledByteBuffer extraBytes
Any extra bytes that were read from the channel. This could be data for this requests, or the next response.
-
-
Constructor Detail
-
AbstractServerConnection
public AbstractServerConnection(org.xnio.StreamConnection channel, ByteBufferPool bufferPool, HttpHandler rootHandler, org.xnio.OptionMap undertowOptions, int bufferSize)
-
-
Method Detail
-
getBufferPool
public org.xnio.Pool<ByteBuffer> getBufferPool()
- Specified by:
getBufferPoolin classServerConnection- Returns:
- The connections buffer pool
-
getRootHandler
public HttpHandler getRootHandler()
Get the root HTTP handler for this connection.- Returns:
- the root HTTP handler for this connection
-
getByteBufferPool
public ByteBufferPool getByteBufferPool()
Get the buffer pool for this connection.- Specified by:
getByteBufferPoolin classServerConnection- Returns:
- the buffer pool for this connection
-
getChannel
public org.xnio.StreamConnection getChannel()
Get the underlying channel.- Returns:
- the underlying channel
-
getCloseSetter
public org.xnio.ChannelListener.Setter<ServerConnection> getCloseSetter()
-
getWorker
public org.xnio.XnioWorker getWorker()
- Specified by:
getWorkerin interfaceorg.xnio.channels.CloseableChannel- Specified by:
getWorkerin classServerConnection- Returns:
- The connections worker
-
getIoThread
public org.xnio.XnioIoThread getIoThread()
- Specified by:
getIoThreadin interfaceorg.xnio.channels.CloseableChannel- Specified by:
getIoThreadin classServerConnection- Returns:
- The IO thread associated with the connection
-
isOpen
public boolean isOpen()
- Specified by:
isOpenin interfaceChannel- Specified by:
isOpenin classServerConnection- Returns:
- true if the connection is open
-
supportsOption
public boolean supportsOption(org.xnio.Option<?> option)
- Specified by:
supportsOptionin interfaceorg.xnio.channels.Configurable- Specified by:
supportsOptionin classServerConnection
-
getOption
public <T> T getOption(org.xnio.Option<T> option) throws IOException- Specified by:
getOptionin interfaceorg.xnio.channels.Configurable- Specified by:
getOptionin classServerConnection- Throws:
IOException
-
setOption
public <T> T setOption(org.xnio.Option<T> option, T value) throws IllegalArgumentException, IOException- Specified by:
setOptionin interfaceorg.xnio.channels.Configurable- Specified by:
setOptionin classServerConnection- Throws:
IllegalArgumentExceptionIOException
-
close
public void close() throws IOException- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceChannel- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceorg.xnio.channels.CloseableChannel- Specified by:
closein interfaceInterruptibleChannel- Specified by:
closein classServerConnection- Throws:
IOException
-
getPeerAddress
public SocketAddress getPeerAddress()
Description copied from class:ServerConnectionReturns the actual address of the remote connection. This will not take things like X-Forwarded-for into account.- Specified by:
getPeerAddressin interfaceorg.xnio.channels.ConnectedChannel- Specified by:
getPeerAddressin classServerConnection- Returns:
- The address of the remote peer
-
getPeerAddress
public <A extends SocketAddress> A getPeerAddress(Class<A> type)
Description copied from class:ServerConnectionReturns the actual address of the remote connection. This will not take things like X-Forwarded-for into account.- Specified by:
getPeerAddressin interfaceorg.xnio.channels.ConnectedChannel- Specified by:
getPeerAddressin classServerConnection- Type Parameters:
A- The address type- Parameters:
type- The type of address to return- Returns:
- The remote endpoint address
-
getLocalAddress
public SocketAddress getLocalAddress()
- Specified by:
getLocalAddressin interfaceorg.xnio.channels.BoundChannel- Specified by:
getLocalAddressin classServerConnection
-
getLocalAddress
public <A extends SocketAddress> A getLocalAddress(Class<A> type)
- Specified by:
getLocalAddressin interfaceorg.xnio.channels.BoundChannel- Specified by:
getLocalAddressin classServerConnection
-
getUndertowOptions
public org.xnio.OptionMap getUndertowOptions()
- Specified by:
getUndertowOptionsin classServerConnection
-
getBufferSize
public int getBufferSize()
- Specified by:
getBufferSizein classServerConnection- Returns:
- The size of the buffers allocated by the buffer pool
-
getExtraBytes
public PooledByteBuffer getExtraBytes()
-
setExtraBytes
public void setExtraBytes(PooledByteBuffer extraBytes)
-
getOriginalSourceConduit
public org.xnio.conduits.StreamSourceConduit getOriginalSourceConduit()
- Returns:
- The original source conduit
-
getOriginalSinkConduit
public org.xnio.conduits.StreamSinkConduit getOriginalSinkConduit()
- Returns:
- The original underlying sink conduit
-
resetChannel
public AbstractServerConnection.ConduitState resetChannel()
Resets the channel to its original state, effectively disabling all current conduit wrappers. The current state is encapsulated inside aAbstractServerConnection.ConduitStateobject that can be used the restore the channel.- Returns:
- An opaque representation of the previous channel state
-
clearChannel
public void clearChannel()
Resets the channel to its original state, effectively disabling all current conduit wrappers. The current state is lost.
-
restoreChannel
public void restoreChannel(AbstractServerConnection.ConduitState state)
Restores the channel conduits to a previous state.- Parameters:
state- The original state- See Also:
resetChannel()
-
sink
protected static org.xnio.conduits.StreamSinkConduit sink(AbstractServerConnection.ConduitState state)
-
source
protected static org.xnio.conduits.StreamSourceConduit source(AbstractServerConnection.ConduitState state)
-
addCloseListener
public void addCloseListener(ServerConnection.CloseListener listener)
Description copied from class:ServerConnectionAdds a close listener, than will be invoked with the connection is closed- Specified by:
addCloseListenerin classServerConnection- Parameters:
listener- The close listener
-
getSinkChannel
protected org.xnio.conduits.ConduitStreamSinkChannel getSinkChannel()
- Specified by:
getSinkChannelin classServerConnection
-
getSourceChannel
protected org.xnio.conduits.ConduitStreamSourceChannel getSourceChannel()
- Specified by:
getSourceChannelin classServerConnection
-
setUpgradeListener
protected void setUpgradeListener(HttpUpgradeListener upgradeListener)
- Specified by:
setUpgradeListenerin classServerConnection
-
maxEntitySizeUpdated
protected void maxEntitySizeUpdated(HttpServerExchange exchange)
Description copied from class:ServerConnectionCallback that is invoked if the max entity size is updated.- Specified by:
maxEntitySizeUpdatedin classServerConnection- Parameters:
exchange- The current exchange
-
-