Package org.apache.http.nio.protocol
Class AbstractAsyncRequestConsumer<T>
- java.lang.Object
-
- org.apache.http.nio.protocol.AbstractAsyncRequestConsumer<T>
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
,HttpAsyncRequestConsumer<T>
- Direct Known Subclasses:
BasicAsyncRequestConsumer
public abstract class AbstractAsyncRequestConsumer<T> extends java.lang.Object implements HttpAsyncRequestConsumer<T>
AbstractHttpAsyncRequestConsumer
implementation that relieves its subclasses from having to manage internal state and provides a number of protected event methods that they need to implement.- Since:
- 4.2
-
-
Constructor Summary
Constructors Constructor Description AbstractAsyncRequestConsumer()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract T
buildResult(HttpContext context)
Invoked to generate a result object from the received HTTP request message.void
close()
void
consumeContent(ContentDecoder decoder, IOControl ioControl)
UseonContentReceived(ContentDecoder, IOControl)
instead.void
failed(java.lang.Exception ex)
Invoked to signal that the request processing terminated abnormally.java.lang.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.protected void
onClose()
Invoked when the consumer is being closed.protected abstract void
onContentReceived(ContentDecoder decoder, IOControl ioControl)
Invoked to process a chunk of content from theContentDecoder
.protected abstract void
onEntityEnclosed(HttpEntity entity, ContentType contentType)
Invoked if the request message encloses a content entity.protected abstract void
onRequestReceived(HttpRequest request)
Invoked when a HTTP request message is received.protected abstract void
releaseResources()
Invoked to release all system resources currently allocated.void
requestCompleted(HttpContext context)
UsebuildResult(HttpContext)
instead.void
requestReceived(HttpRequest request)
UseonRequestReceived(HttpRequest)
instead.
-
-
-
Field Detail
-
completed
private final java.util.concurrent.atomic.AtomicBoolean completed
-
result
private volatile T result
-
ex
private volatile java.lang.Exception ex
-
-
Method Detail
-
onRequestReceived
protected abstract void onRequestReceived(HttpRequest request) throws HttpException, java.io.IOException
Invoked when a HTTP request message is received. Please note that theonContentReceived(ContentDecoder, IOControl)
method will be invoked only for if the request message implementsHttpEntityEnclosingRequest
interface and has a content entity enclosed.- Parameters:
request
- HTTP request message.- Throws:
HttpException
- in case of HTTP protocol violationjava.io.IOException
- in case of an I/O error
-
onEntityEnclosed
protected abstract void onEntityEnclosed(HttpEntity entity, ContentType contentType) throws java.io.IOException
Invoked if the request message encloses a content entity.- Parameters:
entity
- HTTP entitycontentType
- expected content type.- Throws:
java.io.IOException
- in case of an I/O error
-
onContentReceived
protected abstract void onContentReceived(ContentDecoder decoder, IOControl ioControl) throws java.io.IOException
Invoked to process a chunk of content from theContentDecoder
. TheIOControl
interface can be used to suspend input events if the consumer is temporarily unable to consume more content.The consumer can use the
ContentDecoder.isCompleted()
method to find out whether or not the message content has been fully consumed.- Parameters:
decoder
- content decoder.ioControl
- I/O control of the underlying connection.- Throws:
java.io.IOException
- in case of an I/O error
-
buildResult
protected abstract T buildResult(HttpContext context) throws java.lang.Exception
Invoked to generate a result object from the received HTTP request message.- Parameters:
context
- HTTP context.- Returns:
- result of the request processing.
- Throws:
java.lang.Exception
- in case of an abnormal termination.
-
releaseResources
protected abstract void releaseResources()
Invoked to release all system resources currently allocated.
-
onClose
protected void onClose() throws java.io.IOException
Invoked when the consumer is being closed.- Throws:
java.io.IOException
- may be thrown by subclassses- Since:
- 4.3
-
requestReceived
public final void requestReceived(HttpRequest request) throws HttpException, java.io.IOException
UseonRequestReceived(HttpRequest)
instead.- Specified by:
requestReceived
in interfaceHttpAsyncRequestConsumer<T>
- Parameters:
request
- HTTP request message.- Throws:
HttpException
- in case of HTTP protocol violationjava.io.IOException
- in case of an I/O error
-
consumeContent
public final void consumeContent(ContentDecoder decoder, IOControl ioControl) throws java.io.IOException
UseonContentReceived(ContentDecoder, IOControl)
instead.- Specified by:
consumeContent
in interfaceHttpAsyncRequestConsumer<T>
- Parameters:
decoder
- content decoder.ioControl
- I/O control of the underlying connection.- Throws:
java.io.IOException
- in case of an I/O error
-
requestCompleted
public final void requestCompleted(HttpContext context)
UsebuildResult(HttpContext)
instead.- Specified by:
requestCompleted
in interfaceHttpAsyncRequestConsumer<T>
- Parameters:
context
- HTTP context
-
failed
public final void failed(java.lang.Exception ex)
Description copied from interface:HttpAsyncRequestConsumer
Invoked to signal that the request processing terminated abnormally.- Specified by:
failed
in interfaceHttpAsyncRequestConsumer<T>
- Parameters:
ex
- exception
-
close
public final void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Throws:
java.io.IOException
-
getException
public java.lang.Exception getException()
Description copied from interface:HttpAsyncRequestConsumer
Returns an exception in case of an abnormal termination. This method returnsnull
if the request execution is still ongoing or if it completed successfully.- Specified by:
getException
in interfaceHttpAsyncRequestConsumer<T>
- See Also:
HttpAsyncRequestConsumer.isDone()
-
getResult
public T getResult()
Description copied from interface:HttpAsyncRequestConsumer
Returns a result of the request execution, when available. This method returnsnull
if the request execution is still ongoing.- Specified by:
getResult
in interfaceHttpAsyncRequestConsumer<T>
- See Also:
HttpAsyncRequestConsumer.isDone()
-
isDone
public boolean isDone()
Description copied from interface:HttpAsyncRequestConsumer
Determines whether or not the request execution completed. If the request processing terminated normallyHttpAsyncRequestConsumer.getResult()
can be used to obtain the result. If the request processing terminated abnormallyHttpAsyncRequestConsumer.getException()
can be used to obtain the cause.- Specified by:
isDone
in interfaceHttpAsyncRequestConsumer<T>
-
-