org.apache.hc.client5.http.impl.async

## Class InternalHttpAsyncClient

- java.lang.Object
- - org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient
  - - org.apache.hc.client5.http.impl.async.InternalHttpAsyncClient

All Implemented Interfaces:
  Closeable, AutoCloseable, HttpAsyncClient

    @Contract(threading=SAFE_CONDITIONAL)
    @Internal
    public final class InternalHttpAsyncClient
    extends CloseableHttpAsyncClient

Internal implementation of `CloseableHttpAsyncClient` that can negotiate the most optimal HTTP protocol version during during the `TLS` handshake with `ALPN` extension if supported by the Java runtime.

Concurrent message exchanges executed by this client will get assigned to separate connections leased from the connection pool.

Since:
  5.0

### Method Summary

Methods
`void` `awaitShutdown(org.apache.hc.core5.util.TimeValue waitTime)`
`void` `close()`

`<T> Future<T>`

`execute(org.apache.hc.core5.http.nio.AsyncRequestProducer requestProducer, org.apache.hc.core5.http.nio.AsyncResponseConsumer<T> responseConsumer, org.apache.hc.core5.http.nio.HandlerFactory<org.apache.hc.core5.http.nio.AsyncPushConsumer> pushHandlerFactory, org.apache.hc.core5.http.protocol.HttpContext context, org.apache.hc.core5.concurrent.FutureCallback<T> callback)`
Initiates asynchronous HTTP request execution using the given context.

`org.apache.hc.core5.reactor.IOReactorStatus` `getStatus()`
`void` `initiateShutdown()`
`void` `register(String hostname, String uriPattern, org.apache.hc.core5.function.Supplier<org.apache.hc.core5.http.nio.AsyncPushConsumer> supplier)`
`void` `shutdown(org.apache.hc.core5.io.CloseMode closeMode)`
`void` `start()`

### Methods inherited from class org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient

`execute, execute, execute, execute, register`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Method Detail

#### close

    public void close()

Specified by:
  `close` in interface `Closeable`
Specified by:
  `close` in interface `AutoCloseable`

#### execute

    public <T> Future<T> execute(org.apache.hc.core5.http.nio.AsyncRequestProducer requestProducer,
                        org.apache.hc.core5.http.nio.AsyncResponseConsumer<T> responseConsumer,
                        org.apache.hc.core5.http.nio.HandlerFactory<org.apache.hc.core5.http.nio.AsyncPushConsumer> pushHandlerFactory,
                        org.apache.hc.core5.http.protocol.HttpContext context,
                        org.apache.hc.core5.concurrent.FutureCallback<T> callback)

Description copied from interface: `HttpAsyncClient`
Initiates asynchronous HTTP request execution using the given context.

The request producer passed to this method will be used to generate a request message and stream out its content without buffering it in memory. The response consumer passed to this method will be used to process a response message without buffering its content in memory.

Please note it may be unsafe to interact with the context instance while the request is still being executed.

Type Parameters:
  `T` - the result type of request execution.
Parameters:
  `requestProducer` - request producer callback.
  `responseConsumer` - response consumer callback.
  `pushHandlerFactory` - the push handler factory. Optional and may be `null`.
  `context` - HTTP context. Optional and may be `null`.
  `callback` - future callback. Optional and may be `null`.
Returns:
  future representing pending completion of the operation.

#### start

    public final void start()

Specified by:
  `start` in class `CloseableHttpAsyncClient`

#### register

    public void register(String hostname,
                String uriPattern,
                org.apache.hc.core5.function.Supplier<org.apache.hc.core5.http.nio.AsyncPushConsumer> supplier)

Specified by:
  `register` in class `CloseableHttpAsyncClient`

#### getStatus

    public final org.apache.hc.core5.reactor.IOReactorStatus getStatus()

Specified by:
  `getStatus` in class `CloseableHttpAsyncClient`

#### awaitShutdown

    public final void awaitShutdown(org.apache.hc.core5.util.TimeValue waitTime)
                             throws InterruptedException

Specified by:
  `awaitShutdown` in class `CloseableHttpAsyncClient`
Throws:
  `InterruptedException`

#### initiateShutdown

    public final void initiateShutdown()

Specified by:
  `initiateShutdown` in class `CloseableHttpAsyncClient`

#### shutdown

    public final void shutdown(org.apache.hc.core5.io.CloseMode closeMode)

Specified by:
  `shutdown` in class `CloseableHttpAsyncClient`