org.apache.http.nio.protocol

## Interface HttpAsyncResponseProducer

All Superinterfaces:
  AutoCloseable, Closeable

All Known Implementing Classes:
  BasicAsyncResponseProducer

    public interface HttpAsyncResponseProducer
    extends Closeable

`HttpAsyncResponseProducer` is a callback interface whose methods get invoked to generate an HTTP response message and to stream message content to a non-blocking HTTP connection on the server side.

Since:
  4.2

### Method Summary

Methods
`void` `failed(Exception ex)` Invoked to signal that the response processing terminated abnormally.
`HttpResponse` `generateResponse()` Invoked to generate a HTTP response message head.
`void` `produceContent(ContentEncoder encoder, IOControl ioctrl)` Invoked to write out a chunk of content to the `ContentEncoder`.
`void` `responseCompleted(HttpContext context)` Invoked to signal that the response has been fully written out.

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

`close`

### Method Detail

#### generateResponse

    HttpResponse generateResponse()

Invoked to generate a HTTP response message head.

Returns:
  HTTP response message.

#### produceContent

    void produceContent(ContentEncoder encoder,
                      IOControl ioctrl)
                        throws IOException

Invoked to write out a chunk of content to the `ContentEncoder`. The `IOControl` interface can be used to suspend output event notifications if the producer is temporarily unable to produce more content.

When all content is finished, the producer MUST call `ContentEncoder.complete()`. Failure to do so may cause the entity to be incorrectly delimited.

Please note that the `ContentEncoder` 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 output event notifications when more content is made available.

Parameters:
  `encoder` - content encoder.
  `ioctrl` - I/O control of the underlying connection.
Throws:
  `IOException` - in case of an I/O error

#### responseCompleted

    void responseCompleted(HttpContext context)

Invoked to signal that the response has been fully written out.

Parameters:
  `context` - HTTP context

#### failed

    void failed(Exception ex)

Invoked to signal that the response processing terminated abnormally.

Parameters:
  `ex` - exception