Package io.vertx.core.http

## 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:
  - `close()`
  - `closeHandler(io.vertx.core.Handler<java.lang.Void>)`
  - `exceptionHandler(io.vertx.core.Handler<java.lang.Throwable>)`
  Author:
    Julien Viet

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `default Future<Void>` | `close()` | Close immediately (`shutdown(0, TimeUnit.SECONDS`).
    `HttpConnection` | `closeHandler​(Handler<Void> handler)` | Set a close handler.
    `HttpConnection` | `exceptionHandler​(Handler<Throwable> handler)` | Set an handler called when a connection error happens
    `default int` | `getWindowSize()` |
    `default HttpConnection` | `goAway​(long errorCode)` | Like `goAway(long, int)` with a last stream id `-1` which means to disallow any new stream creation.
    `default HttpConnection` | `goAway​(long errorCode, int lastStreamId)` | Like `goAway(long, int, Buffer)` with no buffer.
    `HttpConnection` | `goAway​(long errorCode, int lastStreamId, Buffer debugData)` | Send a go away frame to the remote endpoint of the connection.
    `HttpConnection` | `goAwayHandler​(Handler<GoAway> handler)` | Set an handler called when a GOAWAY frame is received.
    `String` | `indicatedServerName()` | Returns the SNI server name presented during the SSL handshake by the client.
    `boolean` | `isSsl()` |
    `SocketAddress` | `localAddress()` |
    `SocketAddress` | `localAddress​(boolean real)` | Like `localAddress()` ()} but returns the server local address when `real` is `true`
    `List<Certificate>` | `peerCertificates()` |
    `Future<Buffer>` | `ping​(Buffer data)` | Send a PING frame to the remote endpoint.
    `HttpConnection` | `pingHandler​(Handler<Buffer> handler)` | Set an handler notified when a PING frame is received from the remote endpoint.
    `SocketAddress` | `remoteAddress()` |
    `SocketAddress` | `remoteAddress​(boolean real)` | Like `remoteAddress()` but returns the proxy remote address when `real` is `true`
    `Http2Settings` | `remoteSettings()` |
    `HttpConnection` | `remoteSettingsHandler​(Handler<Http2Settings> handler)` | Set an handler that is called when remote endpoint `Http2Settings` are updated.
    `Http2Settings` | `settings()` |
    `default HttpConnection` | `setWindowSize​(int windowSize)` | Update the current connection wide window size to a new size.
    `default Future<Void>` | `shutdown()` | Shutdown with a 30 seconds timeout (`shutdown(30, TimeUnit.SECONDS)`).
    `Future<Void>` | `shutdown​(long timeout, TimeUnit unit)` | 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.
    `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.
    `SSLSession` | `sslSession()` |
    `Future<Void>` | `updateSettings​(Http2Settings settings)` | Send to the remote endpoint an update of this endpoint settings

- - ### Method Detail

    - #### 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

          default HttpConnection goAway​(long errorCode)

      Like `goAway(long, int)` with a last stream id `-1` which means to disallow any new stream creation.

    - #### goAway

          default HttpConnection goAway​(long errorCode,
                                        int lastStreamId)

      Like `goAway(long, int, Buffer)` with no buffer.

    - #### goAway

          HttpConnection goAway​(long errorCode,
                                int lastStreamId,
                                Buffer debugData)

      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

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

      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
        `unit` - the of the timeout
      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

          Http2Settings settings()

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

    - #### updateSettings

          Future<Void> updateSettings​(Http2Settings 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

          Http2Settings remoteSettings()

      Returns:
        the current remote endpoint settings for this connection - this is not implemented for HTTP/1.x

    - #### remoteSettingsHandler

          HttpConnection remoteSettingsHandler​(Handler<Http2Settings> handler)

      Set an handler that is called when remote endpoint `Http2Settings` 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:
        `SSLSession`

    - #### peerCertificates

          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:
        `()`, `sslSession()`

    - #### indicatedServerName

          String indicatedServerName()

      Returns the SNI server name presented during the SSL handshake by the client.
      Returns:
        the indicated server name