Class HttpServerConnection

  • All Implemented Interfaces:
    Attachable, Closeable, AutoCloseable, Channel, InterruptibleChannel, org.xnio.channels.BoundChannel, org.xnio.channels.CloseableChannel, org.xnio.channels.Configurable, org.xnio.channels.ConnectedChannel

    public final class HttpServerConnection
    extends AbstractServerConnection
    A server-side HTTP connection.

    Note that the lifecycle of the server connection is tied to the underlying TCP connection. Even if the channel is upgraded the connection is not considered closed until the upgraded channel is closed.

    Author:
    David M. Lloyd
    • Constructor Detail

      • HttpServerConnection

        public HttpServerConnection​(org.xnio.StreamConnection channel,
                                    ByteBufferPool bufferPool,
                                    HttpHandler rootHandler,
                                    org.xnio.OptionMap undertowOptions,
                                    int bufferSize,
                                    ConnectorStatisticsImpl connectorStatistics)
    • Method Detail

      • sendOutOfBandResponse

        public HttpServerExchange sendOutOfBandResponse​(HttpServerExchange exchange)
        Description copied from class: ServerConnection
        Sends an out of band response, such as a HTTP 100-continue response. WARNING: do not attempt to write to the current exchange until the out of band exchange has been fully written. Doing so may have unexpected results. TODO: this needs more thought.
        Specified by:
        sendOutOfBandResponse in class ServerConnection
        Parameters:
        exchange - The current exchange
        Returns:
        The out of band exchange.
      • isContinueResponseSupported

        public boolean isContinueResponseSupported()
        Specified by:
        isContinueResponseSupported in class ServerConnection
        Returns:
        true if this connection supports sending a 100-continue response
      • terminateRequestChannel

        public void terminateRequestChannel​(HttpServerExchange exchange)
        Description copied from class: ServerConnection
        Invoked when the exchange is complete, and there is still data in the request channel. Some implementations (such as SPDY and HTTP2) have more efficient ways to drain the request than simply reading all data (e.g. RST_STREAM). After this method is invoked the stream will be drained normally.
        Specified by:
        terminateRequestChannel in class ServerConnection
        Parameters:
        exchange - The current exchange.
      • ungetRequestBytes

        public void ungetRequestBytes​(PooledByteBuffer unget)
        Pushes back the given data. This should only be used by transfer coding handlers that have read past the end of the request when handling pipelined requests
        Parameters:
        unget - The buffer to push back
      • getSslSessionInfo

        public SSLSessionInfo getSslSessionInfo()
        Description copied from class: ServerConnection
        Gets SSL information about the connection. This could represent the actual client connection, or could be providing SSL information that was provided by a front end proxy.
        Specified by:
        getSslSessionInfo in class ServerConnection
        Returns:
        SSL information about the connection
      • setSslSessionInfo

        public void setSslSessionInfo​(SSLSessionInfo sessionInfo)
        Description copied from class: ServerConnection
        Sets the current SSL information. This can be used by handlers to setup SSL information that was provided by a front end proxy. If this is being set of a per request basis then you must ensure that it is either cleared by an exchange completion listener at the end of the request, or is always set for every request. Otherwise it is possible to SSL information to 'leak' between requests.
        Specified by:
        setSslSessionInfo in class ServerConnection
        Parameters:
        sessionInfo - The ssl session information
      • getSslSession

        public SSLSession getSslSession()
        Description copied from class: ServerConnection
        Gets the SSLSession of the underlying connection, or null if SSL is not in use. Note that for client cert auth ServerConnection.getSslSessionInfo() should be used instead, as it takes into account other information potentially provided by load balancers that terminate SSL
        Overrides:
        getSslSession in class ServerConnection
        Returns:
        The SSLSession of the connection
      • upgradeChannel

        protected org.xnio.StreamConnection upgradeChannel()
        Description copied from class: ServerConnection
        Upgrade the connection, if allowed
        Specified by:
        upgradeChannel in class ServerConnection
        Returns:
        The StreamConnection that should be passed to the upgrade handler
      • getSinkConduit

        protected org.xnio.conduits.StreamSinkConduit getSinkConduit​(HttpServerExchange exchange,
                                                                     org.xnio.conduits.StreamSinkConduit conduit)
        Description copied from class: ServerConnection
        Gets the sink conduit that should be used for this request. This allows the connection to apply any per-request conduit wrapping that is required, without adding to the response wrappers array. There is no corresponding method for source conduits, as in general conduits can be directly inserted into the connection after the request has been read.
        Specified by:
        getSinkConduit in class ServerConnection
        Returns:
        The source conduit
      • isUpgradeSupported

        protected boolean isUpgradeSupported()
        Specified by:
        isUpgradeSupported in class ServerConnection
        Returns:
        true if this connection supports HTTP upgrade
      • isConnectSupported

        protected boolean isConnectSupported()
        Specified by:
        isConnectSupported in class ServerConnection
        Returns:
        true if this connection supports the HTTP CONNECT verb
      • getResponseConduit

        public io.undertow.server.protocol.http.HttpResponseConduit getResponseConduit()
      • getTransportProtocol

        public String getTransportProtocol()
        Description copied from class: ServerConnection
        Returns a string representation describing the protocol used to transmit messages on this connection.
        Specified by:
        getTransportProtocol in class ServerConnection
        Returns:
        the transport protocol