Interface HttpConnection

All Known Subinterfaces:
HttpClientConnection

public interface HttpConnection
Represents an HTTP connection.

HTTP/1.x connection provides a limited implementation, the following methods are implemented:

Author:
Julien Viet
  • Method Details

    • protocolVersion

      HttpVersion protocolVersion()
      Returns:
      the version of the protocol of this connection
    • getWindowSize

      default int getWindowSize()
      Returns:
      the current connection window size or -1 for HTTP/1.x
    • setWindowSize

      default HttpConnection setWindowSize(int windowSize)
      Update the current connection wide window size to a new size.

      Increasing this value, gives better performance when several data streams are multiplexed

      This is not implemented for HTTP/1.x.

      Parameters:
      windowSize - the new window size
      Returns:
      a reference to this, so the API can be used fluently
    • goAway

      @Deprecated default HttpConnection goAway(long errorCode)
      Deprecated.
      instead use shutdown()
      Like goAway(long, int) with a last stream id -1 which means to disallow any new stream creation.
    • goAway

      @Deprecated default HttpConnection goAway(long errorCode, int lastStreamId)
      Deprecated.
      instead use shutdown()
      Like goAway(long, int, Buffer) with no buffer.
    • goAway

      @Deprecated HttpConnection goAway(long errorCode, int lastStreamId, Buffer debugData)
      Deprecated.
      instead use shutdown()
      Send a go away frame to the remote endpoint of the connection.

      • a GOAWAY frame is sent to the to the remote endpoint with the errorCode and debugData
      • any stream created after the stream identified by lastStreamId will be closed
      • for an errorCode is different than 0 when all the remaining streams are closed this connection will be closed automatically

      This is not implemented for HTTP/1.x.

      Parameters:
      errorCode - the GOAWAY error code
      lastStreamId - the last stream id
      debugData - additional debug data sent to the remote endpoint
      Returns:
      a reference to this, so the API can be used fluently
    • goAwayHandler

      HttpConnection goAwayHandler(Handler<GoAway> handler)
      Set an handler called when a GOAWAY frame is received.

      This is not implemented for HTTP/1.x.

      Parameters:
      handler - the handler
      Returns:
      a reference to this, so the API can be used fluently
    • shutdownHandler

      HttpConnection shutdownHandler(Handler<Void> handler)
      Set a handler notified when the HTTP connection is shutdown: the client or server will close the connection within a certain amount of time. This gives the opportunity to the handler to close the current requests in progress gracefully before the HTTP connection is forcefully closed.
      Parameters:
      handler - the handler
      Returns:
      a reference to this, so the API can be used fluently
    • shutdown

      default Future<Void> shutdown()
      Shutdown with a 30 seconds timeout (shutdown(30, TimeUnit.SECONDS)).
      Returns:
      a future completed when shutdown has completed
    • shutdown

      default Future<Void> shutdown(long timeout, TimeUnit unit)
    • shutdown

      Future<Void> shutdown(Duration timeout)
      Initiate a graceful connection shutdown, the connection is taken out of service and closed when all the inflight requests are processed, otherwise after a timeout the connection will be closed. Client connection are immediately removed from the pool.
      • HTTP/2 connections will send a go away frame immediately to signal the other side the connection will close.
      • HTTP/1.x connection will be closed.
      Parameters:
      timeout - the amount of time after which all resources are forcibly closed
      Returns:
      a future completed when shutdown has completed
    • closeHandler

      HttpConnection closeHandler(Handler<Void> handler)
      Set a close handler. The handler will get notified when the connection is closed.
      Parameters:
      handler - the handler to be notified
      Returns:
      a reference to this, so the API can be used fluently
    • close

      default Future<Void> close()
      Close immediately (shutdown(0, TimeUnit.SECONDS).
      Returns:
      a future notified when the client is closed
    • settings

      HttpSettings settings()
      Returns:
      the latest server settings acknowledged by the remote endpoint - this is not implemented for HTTP/1.x
    • updateSettings

      Future<Void> updateSettings(HttpSettings settings)
      Send to the remote endpoint an update of this endpoint settings

      The completionHandler will be notified when the remote endpoint has acknowledged the settings.

      This is not implemented for HTTP/1.x.

      Parameters:
      settings - the new settings
      Returns:
      a future completed when the settings have been acknowledged by the remote endpoint
    • remoteSettings

      HttpSettings remoteSettings()
      Returns:
      the current remote endpoint settings for this connection - this is not implemented for HTTP/1.x
    • remoteSettingsHandler

      HttpConnection remoteSettingsHandler(Handler<HttpSettings> handler)
      Set an handler that is called when remote endpoint HttpSettings are updated.

      This is not implemented for HTTP/1.x.

      Parameters:
      handler - the handler for remote endpoint settings
      Returns:
      a reference to this, so the API can be used fluently
    • ping

      Future<Buffer> ping(Buffer data)
      Send a PING frame to the remote endpoint.

      This is not implemented for HTTP/1.x.

      Parameters:
      data - the 8 bytes data of the frame
      Returns:
      a future notified with the pong reply or the failure
    • pingHandler

      HttpConnection pingHandler(Handler<Buffer> handler)
      Set an handler notified when a PING frame is received from the remote endpoint.

      This is not implemented for HTTP/1.x.

      Parameters:
      handler - the handler to be called when a PING is received
      Returns:
      a reference to this, so the API can be used fluently
    • exceptionHandler

      HttpConnection exceptionHandler(Handler<Throwable> handler)
      Set an handler called when a connection error happens
      Parameters:
      handler - the handler
      Returns:
      a reference to this, so the API can be used fluently
    • remoteAddress

      SocketAddress remoteAddress()
      Returns:
      the remote address for this connection, possibly null (e.g a server bound on a domain socket). If useProxyProtocol is set to true, the address returned will be of the actual connecting client.
    • remoteAddress

      SocketAddress remoteAddress(boolean real)
      Like remoteAddress() but returns the proxy remote address when real is true
    • localAddress

      SocketAddress localAddress()
      Returns:
      the local address for this connection, possibly null (e.g a server bound on a domain socket) If useProxyProtocol is set to true, the address returned will be of the proxy.
    • localAddress

      SocketAddress localAddress(boolean real)
      Like localAddress() ()} but returns the server local address when real is true
    • isSsl

      boolean isSsl()
      Returns:
      true if this HttpConnection is encrypted via SSL/TLS.
    • sslSession

      SSLSession sslSession()
      Returns:
      SSLSession associated with the underlying socket. Returns null if connection is not SSL.
      See Also:
    • peerCertificates

      default List<Certificate> peerCertificates() throws SSLPeerUnverifiedException
      Returns:
      an ordered list of the peer certificates. Returns null if connection is not SSL.
      Throws:
      SSLPeerUnverifiedException - SSL peer's identity has not been verified.
      See Also:
    • indicatedServerName

      String indicatedServerName()
      Returns the SNI server name presented during the SSL handshake by the client.
      Returns:
      the indicated server name
    • proxyProtocolV2HeaderTLVs

      default List<Map.Entry<Buffer,Buffer>> proxyProtocolV2HeaderTLVs()
      Returns:
      the type-length-values present in the TCP header as a list of map entries where the key contains the TLV type and the value contains the TLV value. This is mainly used for HA Proxy Protocol v2