HTTPClient
Class RetryModule

java.lang.Object
  extended byHTTPClient.RetryModule
All Implemented Interfaces:
GlobalConstants, HTTPClientModule, HTTPClientModuleConstants

class RetryModule
extends Object
implements HTTPClientModule, GlobalConstants

This module handles request retries when a connection closes prematurely. It is triggered by the RetryException thrown by the StreamDemultiplexor.

This module is somewhat unique in that it doesn't strictly limit itself to the HTTPClientModule interface and its return values. That is, it sends request directly using the HTTPConnection.sendRequest() method. This is necessary because this module will not only resend its request but it also resend all other requests in the chain. Also, it rethrows the RetryException in Phase1 to restart the processing of the modules.

Since:
V0.3

Field Summary
static int CD_0
           
static int CD_CHUNKED
           
static int CD_CLOSE
           
static int CD_CONTLEN
           
static int CD_HDRS
           
static int CD_MP_BR
           
static int CD_NONE
          Content delimiters
static int HTTP
          possible http protocols we (might) handle
static int HTTP_1_0
          some known http versions
static int HTTP_1_1
           
static int HTTP_NG
           
static int HTTPS
           
static int SHTTP
           
 
Fields inherited from interface HTTPClient.HTTPClientModuleConstants
REQ_CONTINUE, REQ_NEWCON_RST, REQ_NEWCON_SND, REQ_RESPONSE, REQ_RESTART, REQ_RETURN, REQ_SHORTCIRC, RSP_CONTINUE, RSP_NEWCON_REQ, RSP_NEWCON_SND, RSP_REQUEST, RSP_RESTART, RSP_SEND, RSP_SHORTCIRC
 
Constructor Summary
(package private) RetryModule()
           
 
Method Summary
 int requestHandler(Request req, Response[] resp)
          Invoked by the HTTPClient.
 void responsePhase1Handler(Response resp, RoRequest roreq)
          Invoked by the HTTPClient.
 int responsePhase2Handler(Response resp, Request req)
          Invoked by the HTTPClient.
 void responsePhase3Handler(Response resp, RoRequest req)
          Invoked by the HTTPClient.
 void trailerHandler(Response resp, RoRequest req)
          Invoked by the HTTPClient.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HTTP

public static final int HTTP
possible http protocols we (might) handle

See Also:
Constant Field Values

HTTPS

public static final int HTTPS
See Also:
Constant Field Values

SHTTP

public static final int SHTTP
See Also:
Constant Field Values

HTTP_NG

public static final int HTTP_NG
See Also:
Constant Field Values

HTTP_1_0

public static final int HTTP_1_0
some known http versions

See Also:
Constant Field Values

HTTP_1_1

public static final int HTTP_1_1
See Also:
Constant Field Values

CD_NONE

public static final int CD_NONE
Content delimiters

See Also:
Constant Field Values

CD_HDRS

public static final int CD_HDRS
See Also:
Constant Field Values

CD_0

public static final int CD_0
See Also:
Constant Field Values

CD_CLOSE

public static final int CD_CLOSE
See Also:
Constant Field Values

CD_CONTLEN

public static final int CD_CONTLEN
See Also:
Constant Field Values

CD_CHUNKED

public static final int CD_CHUNKED
See Also:
Constant Field Values

CD_MP_BR

public static final int CD_MP_BR
See Also:
Constant Field Values
Constructor Detail

RetryModule

RetryModule()
Method Detail

requestHandler

public int requestHandler(Request req,
                          Response[] resp)
Invoked by the HTTPClient.

Specified by:
requestHandler in interface HTTPClientModule
Parameters:
req - the request - may be modified as needed
resp - the response if the status is REQ_RESPONSE or REQ_RETURN
Returns:
status code REQ_XXX specifying further action

responsePhase1Handler

public void responsePhase1Handler(Response resp,
                                  RoRequest roreq)
                           throws IOException,
                                  ModuleException
Invoked by the HTTPClient.

Specified by:
responsePhase1Handler in interface HTTPClientModule
Parameters:
resp - the response - may be modified
roreq - the original request
Throws:
ModuleException - if an exception occurs during the handling of the response
IOException - if an IOException occurs on the socket

responsePhase2Handler

public int responsePhase2Handler(Response resp,
                                 Request req)
Invoked by the HTTPClient.

Specified by:
responsePhase2Handler in interface HTTPClientModule
Parameters:
resp - the response - may be modified
req - the request; if the status is RSP_REQUEST then this must contain the new request; however do not modify this if you don't return a RSP_REQUEST status.
Returns:
status code RSP_XXX specifying further action

responsePhase3Handler

public void responsePhase3Handler(Response resp,
                                  RoRequest req)
Invoked by the HTTPClient.

Specified by:
responsePhase3Handler in interface HTTPClientModule
Parameters:
resp - the response - may be modified
req - the original request

trailerHandler

public void trailerHandler(Response resp,
                           RoRequest req)
Invoked by the HTTPClient.

Specified by:
trailerHandler in interface HTTPClientModule
Parameters:
resp - the response
req - the request