Class HttpConnection

java.lang.Object
org.eclipse.jetty.io.AbstractConnection
org.eclipse.jetty.server.HttpConnection
All Implemented Interfaces:
Closeable, AutoCloseable, Runnable, Connection, Connection.UpgradeFrom, Connection.UpgradeTo, WriteFlusher.Listener, HttpTransport

A Connection that handles the HTTP protocol.

  • Field Details

    • CONNECTION_CLOSE

      public static final HttpField CONNECTION_CLOSE
  • Constructor Details

  • Method Details

    • getCurrentConnection

      public static HttpConnection getCurrentConnection()
      Get the current connection that this thread is dispatched to. Note that a thread may be processing a request asynchronously and thus not be dispatched to the connection.
      Returns:
      the current HttpConnection or null
      See Also:
    • setCurrentConnection

      protected static HttpConnection setCurrentConnection(HttpConnection connection)
    • getBeginNanoTime

      public long getBeginNanoTime()
    • getHttpConfiguration

      public HttpConfiguration getHttpConfiguration()
    • isRecordHttpComplianceViolations

      public boolean isRecordHttpComplianceViolations()
    • newHttpGenerator

      protected HttpGenerator newHttpGenerator()
    • newHttpChannel

      protected HttpChannelOverHttp newHttpChannel()
    • newHttpParser

      protected HttpParser newHttpParser(HttpCompliance compliance)
    • newRequestHandler

      protected HttpParser.RequestHandler newRequestHandler()
    • getServer

      public Server getServer()
    • getConnector

      public Connector getConnector()
    • getHttpChannel

      public HttpChannel getHttpChannel()
    • getParser

      public HttpParser getParser()
    • getGenerator

      public HttpGenerator getGenerator()
    • getMessagesIn

      public long getMessagesIn()
      Specified by:
      getMessagesIn in interface Connection
      Overrides:
      getMessagesIn in class AbstractConnection
    • getMessagesOut

      public long getMessagesOut()
      Specified by:
      getMessagesOut in interface Connection
      Overrides:
      getMessagesOut in class AbstractConnection
    • isUseInputDirectByteBuffers

      public boolean isUseInputDirectByteBuffers()
    • setUseInputDirectByteBuffers

      public void setUseInputDirectByteBuffers(boolean useInputDirectByteBuffers)
    • isUseOutputDirectByteBuffers

      public boolean isUseOutputDirectByteBuffers()
    • setUseOutputDirectByteBuffers

      public void setUseOutputDirectByteBuffers(boolean useOutputDirectByteBuffers)
    • onUpgradeFrom

      public ByteBuffer onUpgradeFrom()
      Description copied from interface: Connection.UpgradeFrom

      Invoked during an upgrade to produce a buffer containing bytes that have not been consumed by this connection, and that must be consumed by the upgrade-to connection.

      Specified by:
      onUpgradeFrom in interface Connection.UpgradeFrom
      Returns:
      a buffer of unconsumed bytes to pass to the upgrade-to connection. The buffer does not belong to any pool and should be discarded after having consumed its bytes. The returned buffer may be null if there are no unconsumed bytes.
    • onUpgradeTo

      public void onUpgradeTo(ByteBuffer buffer)
      Description copied from interface: Connection.UpgradeTo

      Invoked during an upgrade to receive a buffer containing bytes that have not been consumed by the upgrade-from connection, and that must be consumed by this connection.

      Specified by:
      onUpgradeTo in interface Connection.UpgradeTo
      Parameters:
      buffer - a non-null buffer of unconsumed bytes received from the upgrade-from connection. The buffer does not belong to any pool and should be discarded after having consumed its bytes.
    • onFlushed

      public void onFlushed(long bytes) throws IOException
      Description copied from interface: WriteFlusher.Listener

      Invoked when a WriteFlusher flushed bytes in a non-blocking way, as part of a - possibly larger - write.

      This method may be invoked multiple times, for example when writing a large buffer: a first flush of bytes, then the connection became TCP congested, and a subsequent flush of bytes when the connection became writable again.

      This method is never invoked concurrently, but may be invoked by different threads, so implementations may not rely on thread-local variables.

      Implementations may throw an IOException to signal that the write should fail, for example if the implementation enforces a minimum data rate.

      Specified by:
      onFlushed in interface WriteFlusher.Listener
      Parameters:
      bytes - the number of bytes flushed
      Throws:
      IOException - if the write should fail
    • isRequestBufferEmpty

      public boolean isRequestBufferEmpty()
    • onFillable

      public void onFillable()
      Description copied from class: AbstractConnection

      Callback method invoked when the endpoint is ready to be read.

      Specified by:
      onFillable in class AbstractConnection
      See Also:
    • onCompleted

      public void onCompleted()
      Description copied from interface: HttpTransport
      Called to indicated the end of the current request/response cycle (which may be some time after the last content is sent).
      Specified by:
      onCompleted in interface HttpTransport
    • onReadTimeout

      protected boolean onReadTimeout(Throwable timeout)
      Description copied from class: AbstractConnection

      Callback method invoked when the endpoint failed to be ready to be read after a timeout

      Overrides:
      onReadTimeout in class AbstractConnection
      Parameters:
      timeout - the cause of the read timeout
      Returns:
      true to signal that the endpoint must be closed, false to keep the endpoint open
    • onFillInterestedFailed

      protected void onFillInterestedFailed(Throwable cause)
      Description copied from class: AbstractConnection

      Callback method invoked when the endpoint failed to be ready to be read.

      Overrides:
      onFillInterestedFailed in class AbstractConnection
      Parameters:
      cause - the exception that caused the failure
    • onOpen

      public void onOpen()
      Description copied from interface: Connection

      Callback method invoked when this connection is opened.

      Creators of the connection implementation are responsible for calling this method.

      Specified by:
      onOpen in interface Connection
      Overrides:
      onOpen in class AbstractConnection
    • onClose

      public void onClose(Throwable cause)
      Description copied from interface: Connection

      Callback method invoked when this connection is closed.

      Creators of the connection implementation are responsible for calling this method.

      Specified by:
      onClose in interface Connection
      Overrides:
      onClose in class AbstractConnection
      Parameters:
      cause - The cause of the close or null for a normal close
    • run

      public void run()
      Specified by:
      run in interface Runnable
    • send

      public void send(MetaData.Request request, MetaData.Response response, ByteBuffer content, boolean lastContent, Callback callback)
      Description copied from interface: HttpTransport
      Asynchronous call to send a response (or part) over the transport
      Specified by:
      send in interface HttpTransport
      Parameters:
      request - True if the response if for a HEAD request (and the data should not be sent).
      response - The header info to send, or null if just sending more data. The first call to send for a response must have a non null info.
      content - A buffer of content to be sent.
      lastContent - True if the content is the last content for the current response.
      callback - The Callback instance that success or failure of the send is notified on
    • abort

      public void abort(Throwable failure)
      Description copied from interface: HttpTransport
      Aborts this transport.

      This method should terminate the transport in a way that can indicate an abnormal response to the client, for example by abruptly close the connection.

      This method is called when an error response needs to be sent, but the response is already committed, or when a write failure is detected. If abort is called, HttpTransport.onCompleted() is not called

      Specified by:
      abort in interface HttpTransport
      Parameters:
      failure - the failure that caused the abort.
    • isPushSupported

      public boolean isPushSupported()
      Specified by:
      isPushSupported in interface HttpTransport
      Returns:
      true if responses can be pushed over this transport
    • push

      public void push(MetaData.Request request)
      Specified by:
      push in interface HttpTransport
      Parameters:
      request - A request to use as the basis for generating a pushed response.
    • asyncReadFillInterested

      public void asyncReadFillInterested()
    • getBytesIn

      public long getBytesIn()
      Specified by:
      getBytesIn in interface Connection
      Overrides:
      getBytesIn in class AbstractConnection
    • getBytesOut

      public long getBytesOut()
      Specified by:
      getBytesOut in interface Connection
      Overrides:
      getBytesOut in class AbstractConnection
    • toConnectionString

      public String toConnectionString()
      Overrides:
      toConnectionString in class AbstractConnection