org.apache.http.nio.protocol

## Interface HttpAsyncRequestConsumer<T>

- Type Parameters:
    `T` - the result type of request processing.
  All Superinterfaces:
    AutoCloseable, Closeable
  All Known Implementing Classes:
    AbstractAsyncRequestConsumer, BasicAsyncRequestConsumer

      public interface HttpAsyncRequestConsumer<T>
      extends Closeable

  `HttpAsyncRequestConsumer` is a callback interface whose methods get invoked to process an HTTP request message and to stream message content from a non-blocking HTTP connection on the server side.
  Since:
    4.2

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `consumeContent(ContentDecoder decoder, IOControl ioctrl)` Invoked to process a chunk of content from the `ContentDecoder`.
    `void` | `failed(Exception ex)` Invoked to signal that the request processing terminated abnormally.
    `Exception` | `getException()` Returns an exception in case of an abnormal termination.
    `T` | `getResult()` Returns a result of the request execution, when available.
    `boolean` | `isDone()` Determines whether or not the request execution completed.
    `void` | `requestCompleted(HttpContext context)` Invoked to signal that the request has been fully processed.
    `void` | `requestReceived(HttpRequest request)` Invoked when a HTTP request message is received.

    - ### Methods inherited from interface java.io.Closeable

      `close`

- - ### Method Detail

    - #### requestReceived

          void requestReceived(HttpRequest request)
                               throws HttpException,
                                      IOException

      Invoked when a HTTP request message is received. Please note that the `consumeContent(ContentDecoder, IOControl)` method will be invoked only for if the request message implements `HttpEntityEnclosingRequest` interface and has a content entity enclosed.
      Parameters:
        `request` - HTTP request message.
      Throws:
        `HttpException` - in case of HTTP protocol violation
        `IOException` - in case of an I/O error

    - #### consumeContent

          void consumeContent(ContentDecoder decoder,
                            IOControl ioctrl)
                              throws IOException

      Invoked to process a chunk of content from the `ContentDecoder`. The `IOControl` interface can be used to suspend input event notifications if the consumer is temporarily unable to process content.

      The consumer can use the `ContentDecoder.isCompleted()` method to find out whether or not the message content has been fully consumed.

      Please note that the `ContentDecoder` object is not thread-safe and should only be used within the context of this method call. The `IOControl` object can be shared and used on other thread to resume input event notifications when the consumer is capable of processing more content.
      Parameters:
        `decoder` - content decoder.
        `ioctrl` - I/O control of the underlying connection.
      Throws:
        `IOException` - in case of an I/O error

    - #### requestCompleted

          void requestCompleted(HttpContext context)

      Invoked to signal that the request has been fully processed.
      Parameters:
        `context` - HTTP context

    - #### failed

          void failed(Exception ex)

      Invoked to signal that the request processing terminated abnormally.
      Parameters:
        `ex` - exception

    - #### getException

          Exception getException()

      Returns an exception in case of an abnormal termination. This method returns `null` if the request execution is still ongoing or if it completed successfully.
      See Also:
        `isDone()`

    - #### getResult

          T getResult()

      Returns a result of the request execution, when available. This method returns `null` if the request execution is still ongoing.
      See Also:
        `isDone()`

    - #### isDone

          boolean isDone()

      Determines whether or not the request execution completed. If the request processing terminated normally `getResult()` can be used to obtain the result. If the request processing terminated abnormally `getException()` can be used to obtain the cause.

Copyright © 2005–2013 The Apache Software Foundation. All rights reserved.