public abstract class HttpReceiver extends Object
HttpReceiver
provides the abstract code to implement the various steps of the receive of HTTP responses.
HttpReceiver
maintains a state machine that is updated when the steps of receiving a response are executed.
Subclasses must handle the transport-specific details, for example how to read from the raw socket and how to parse the bytes read from the socket. Then they have to call the methods defined in this class in the following order:
responseBegin(HttpExchange)
, when the HTTP response data containing the HTTP status code
is availableresponseHeader(HttpExchange, HttpField)
, when a HTTP field is availableresponseHeaders(HttpExchange)
, when all HTTP headers are availableresponseContent(HttpExchange, ByteBuffer, Callback)
, when HTTP content is availableresponseSuccess(HttpExchange)
, when the response is successfulresponseFailure(Throwable)
to indicate that the response has failed
(for example, because of I/O exceptions).
At any time, user threads may abort the response which will cause responseFailure(Throwable)
to be
invoked.
The state machine maintained by this class ensures that the response steps are not executed by an I/O thread if the response has already been failed.
HttpSender
Modifier | Constructor and Description |
---|---|
protected |
HttpReceiver(HttpChannel channel) |
Modifier and Type | Method and Description |
---|---|
boolean |
abort(Throwable cause) |
protected void |
dispose()
Disposes this
HttpReceiver state. |
protected HttpChannel |
getHttpChannel() |
protected HttpDestination |
getHttpDestination() |
protected HttpExchange |
getHttpExchange() |
protected void |
reset()
Resets this
HttpReceiver state. |
protected boolean |
responseBegin(HttpExchange exchange)
Method to be invoked when the response status code is available.
|
protected boolean |
responseContent(HttpExchange exchange,
ByteBuffer buffer,
Callback callback)
Method to be invoked when response HTTP content is available.
|
protected boolean |
responseFailure(Throwable failure)
Method to be invoked when the response is failed.
|
protected boolean |
responseHeader(HttpExchange exchange,
HttpField field)
Method to be invoked when a response HTTP header is available.
|
protected boolean |
responseHeaders(HttpExchange exchange)
Method to be invoked after all response HTTP headers are available.
|
protected boolean |
responseSuccess(HttpExchange exchange)
Method to be invoked when the response is successful.
|
protected void |
storeCookie(URI uri,
HttpField field) |
protected static final Logger LOG
protected HttpReceiver(HttpChannel channel)
protected HttpChannel getHttpChannel()
protected HttpExchange getHttpExchange()
protected HttpDestination getHttpDestination()
protected boolean responseBegin(HttpExchange exchange)
Subclasses must have set the response status code on the Response
object of the HttpExchange
prior invoking this method.
This method takes case of notifying Response.BeginListener
s.
exchange
- the HTTP exchangeprotected boolean responseHeader(HttpExchange exchange, HttpField field)
Subclasses must not have added the header to the Response
object of the HttpExchange
prior invoking this method.
This method takes case of notifying Response.HeaderListener
s and storing cookies.
exchange
- the HTTP exchangefield
- the response HTTP fieldprotected boolean responseHeaders(HttpExchange exchange)
This method takes case of notifying Response.HeadersListener
s.
exchange
- the HTTP exchangeprotected boolean responseContent(HttpExchange exchange, ByteBuffer buffer, Callback callback)
This method takes case of decoding the content, if necessary, and notifying Response.ContentListener
s.
exchange
- the HTTP exchangebuffer
- the response HTTP content bufferprotected boolean responseSuccess(HttpExchange exchange)
This method takes case of notifying Response.SuccessListener
s and possibly
Response.CompleteListener
s (if the exchange is completed).
exchange
- the HTTP exchangeprotected boolean responseFailure(Throwable failure)
This method takes care of notifying Response.FailureListener
s.
failure
- the response failureprotected void reset()
HttpReceiver
state.
Subclasses should override (but remember to call super
) to reset their own state.
Either this method or dispose()
is called.
protected void dispose()
HttpReceiver
state.
Subclasses should override (but remember to call super
) to dispose their own state.
Either this method or reset()
is called.
public boolean abort(Throwable cause)
Copyright © 1995-2015 Webtide. All Rights Reserved.