T
- the result type of request execution.public class BasicAsyncClientExchangeHandler<T> extends Object implements HttpAsyncClientExchangeHandler
HttpAsyncClientExchangeHandler
that executes
a single HTTP request / response exchange.Constructor and Description |
---|
BasicAsyncClientExchangeHandler(HttpAsyncRequestProducer requestProducer,
HttpAsyncResponseConsumer<T> responseConsumer,
FutureCallback<T> callback,
HttpContext localContext,
NHttpClientConnection conn,
HttpProcessor httppocessor,
ConnectionReuseStrategy connReuseStrategy)
Creates new instance of BasicAsyncRequestExecutionHandler.
|
BasicAsyncClientExchangeHandler(HttpAsyncRequestProducer requestProducer,
HttpAsyncResponseConsumer<T> responseConsumer,
HttpContext localContext,
NHttpClientConnection conn,
HttpProcessor httppocessor)
Creates new instance of BasicAsyncRequestExecutionHandler.
|
Modifier and Type | Method and Description |
---|---|
boolean |
cancel() |
void |
close() |
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 response processing terminated abnormally.
|
HttpRequest |
generateRequest()
Invoked to generate a HTTP request message head.
|
Future<T> |
getFuture() |
void |
inputTerminated()
Invoked to signal that the connection has been terminated prematurely
by the opposite end.
|
boolean |
isDone()
Determines whether or not the response processing completed.
|
void |
produceContent(ContentEncoder encoder,
IOControl ioctrl)
Invoked to write out a chunk of content to the
ContentEncoder . |
void |
requestCompleted()
Invoked to signal that the request has been fully written out.
|
void |
responseCompleted()
Invoked to signal that the response has been fully processed.
|
void |
responseReceived(HttpResponse response)
Invoked when a HTTP response message is received.
|
public BasicAsyncClientExchangeHandler(HttpAsyncRequestProducer requestProducer, HttpAsyncResponseConsumer<T> responseConsumer, FutureCallback<T> callback, HttpContext localContext, NHttpClientConnection conn, HttpProcessor httppocessor, ConnectionReuseStrategy connReuseStrategy)
requestProducer
- the request producer.responseConsumer
- the response consumer.callback
- the future callback invoked when the operation is completed.localContext
- the local execution context.conn
- the actual connection.httppocessor
- the HTTP protocol processor.connReuseStrategy
- the connection re-use strategy.public BasicAsyncClientExchangeHandler(HttpAsyncRequestProducer requestProducer, HttpAsyncResponseConsumer<T> responseConsumer, HttpContext localContext, NHttpClientConnection conn, HttpProcessor httppocessor)
requestProducer
- the request producer.responseConsumer
- the response consumer.localContext
- the local execution context.conn
- the actual connection.httppocessor
- the HTTP protocol processor.public void close() throws IOException
close
in interface Closeable
close
in interface AutoCloseable
IOException
public HttpRequest generateRequest() throws IOException, HttpException
HttpAsyncClientExchangeHandler
HttpEntityEnclosingRequest
interface if it is
to enclose a content entity. The HttpAsyncClientExchangeHandler.produceContent(ContentEncoder,
IOControl)
method will not be invoked if
HttpEntityEnclosingRequest.getEntity()
returns
null
.generateRequest
in interface HttpAsyncClientExchangeHandler
IOException
- in case of an I/O errorHttpException
- in case of HTTP protocol violationpublic void produceContent(ContentEncoder encoder, IOControl ioctrl) throws IOException
HttpAsyncClientExchangeHandler
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.
produceContent
in interface HttpAsyncClientExchangeHandler
encoder
- content encoder.ioctrl
- I/O control of the underlying connection.IOException
- in case of an I/O errorpublic void requestCompleted()
HttpAsyncClientExchangeHandler
requestCompleted
in interface HttpAsyncClientExchangeHandler
public void responseReceived(HttpResponse response) throws IOException, HttpException
HttpAsyncClientExchangeHandler
HttpAsyncClientExchangeHandler.consumeContent(ContentDecoder, IOControl)
method
will be invoked only if the response messages has a content entity
enclosed.responseReceived
in interface HttpAsyncClientExchangeHandler
response
- HTTP response message.IOException
- in case of an I/O errorHttpException
- in case of HTTP protocol violationpublic void consumeContent(ContentDecoder decoder, IOControl ioctrl) throws IOException
HttpAsyncClientExchangeHandler
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.
consumeContent
in interface HttpAsyncClientExchangeHandler
decoder
- content decoder.ioctrl
- I/O control of the underlying connection.IOException
- in case of an I/O errorpublic void responseCompleted() throws IOException
HttpAsyncClientExchangeHandler
responseCompleted
in interface HttpAsyncClientExchangeHandler
IOException
public void inputTerminated()
HttpAsyncClientExchangeHandler
inputTerminated
in interface HttpAsyncClientExchangeHandler
public void failed(Exception ex)
HttpAsyncClientExchangeHandler
failed
in interface HttpAsyncClientExchangeHandler
ex
- exceptionpublic boolean cancel()
cancel
in interface Cancellable
public boolean isDone()
HttpAsyncClientExchangeHandler
isDone
in interface HttpAsyncClientExchangeHandler
Copyright © 2010 - 2020 Adobe. All Rights Reserved