com.ning.http.client.providers.netty
Class NettyResponseFuture<V>

java.lang.Object
  extended by com.ning.http.client.providers.netty.NettyResponseFuture<V>
Type Parameters:
V -
All Implemented Interfaces:
FutureImpl<V>, java.util.concurrent.Future<V>

public final class NettyResponseFuture<V>
extends java.lang.Object
implements FutureImpl<V>

A Future that can be used to track when an asynchronous HTTP request has been fully processed.


Field Summary
static java.lang.String MAX_RETRY
           
 
Constructor Summary
NettyResponseFuture(java.net.URI uri, Request request, AsyncHandler<V> asyncHandler, org.jboss.netty.handler.codec.http.HttpRequest nettyRequest, int responseTimeoutInMs, NettyAsyncHttpProvider asyncHttpProvider)
           
 
Method Summary
 void abort(java.lang.Throwable t)
           
protected  void attachChannel(org.jboss.netty.channel.Channel channel)
          Attach a Channel for further re-use.
 boolean cancel(boolean force)
          
 boolean cannotBeReplay()
          Return true if the Future cannot be recovered.
protected  boolean canRetry()
           
protected  org.jboss.netty.channel.Channel channel()
          Return the channel that was previously used.
 void done(java.util.concurrent.Callable callable)
          Execute a Callable and if there is no exception, mark this Future as done and release the internal lock.
 V get()
          
 V get(long l, java.util.concurrent.TimeUnit tu)
          
protected  boolean getAndSetAuth(boolean inDigestAuth)
           
 boolean getAndSetStatusReceived(boolean sr)
           
protected  AsyncHandler<V> getAsyncHandler()
           
protected  org.jboss.netty.handler.codec.http.HttpResponse getHttpResponse()
           
protected  boolean getKeepAlive()
           
 org.jboss.netty.handler.codec.http.HttpRequest getNettyRequest()
           
protected  Request getRequest()
           
protected  com.ning.http.client.providers.netty.NettyResponseFuture.STATE getState()
           
protected  java.net.URI getURI()
           
 boolean hasExpired()
          Is the Future still valid
protected  int incrementAndGetCurrentRedirectCount()
           
 boolean isCancelled()
          
 boolean isDone()
          
protected  boolean isInAuth()
           
protected  NettyAsyncHttpProvider provider()
           
protected  void setHttpResponse(org.jboss.netty.handler.codec.http.HttpResponse httpResponse)
           
protected  void setKeepAlive(boolean keepAlive)
           
protected  void setNettyRequest(org.jboss.netty.handler.codec.http.HttpRequest nettyRequest)
           
protected  void setReaperFuture(java.util.concurrent.Future<?> reaperFuture)
           
protected  void setState(com.ning.http.client.providers.netty.NettyResponseFuture.STATE state)
           
protected  void setURI(java.net.URI uri)
           
 java.lang.String toString()
           
protected  void touch()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

MAX_RETRY

public static final java.lang.String MAX_RETRY
See Also:
Constant Field Values
Constructor Detail

NettyResponseFuture

public NettyResponseFuture(java.net.URI uri,
                           Request request,
                           AsyncHandler<V> asyncHandler,
                           org.jboss.netty.handler.codec.http.HttpRequest nettyRequest,
                           int responseTimeoutInMs,
                           NettyAsyncHttpProvider asyncHttpProvider)
Method Detail

getURI

protected java.net.URI getURI()
                       throws java.net.MalformedURLException
Throws:
java.net.MalformedURLException

setURI

protected void setURI(java.net.URI uri)

isDone

public boolean isDone()

Specified by:
isDone in interface java.util.concurrent.Future<V>

isCancelled

public boolean isCancelled()

Specified by:
isCancelled in interface java.util.concurrent.Future<V>

cancel

public boolean cancel(boolean force)

Specified by:
cancel in interface java.util.concurrent.Future<V>

hasExpired

public boolean hasExpired()
Is the Future still valid

Returns:
true if response has expired and should be terminated.

get

public V get()
      throws java.lang.InterruptedException,
             java.util.concurrent.ExecutionException

Specified by:
get in interface java.util.concurrent.Future<V>
Throws:
java.lang.InterruptedException
java.util.concurrent.ExecutionException

get

public V get(long l,
             java.util.concurrent.TimeUnit tu)
      throws java.lang.InterruptedException,
             java.util.concurrent.TimeoutException,
             java.util.concurrent.ExecutionException

Specified by:
get in interface java.util.concurrent.Future<V>
Throws:
java.lang.InterruptedException
java.util.concurrent.TimeoutException
java.util.concurrent.ExecutionException

done

public final void done(java.util.concurrent.Callable callable)
Description copied from interface: FutureImpl
Execute a Callable and if there is no exception, mark this Future as done and release the internal lock.

Specified by:
done in interface FutureImpl<V>

abort

public final void abort(java.lang.Throwable t)
Specified by:
abort in interface FutureImpl<V>

getRequest

protected final Request getRequest()

getNettyRequest

public final org.jboss.netty.handler.codec.http.HttpRequest getNettyRequest()

setNettyRequest

protected final void setNettyRequest(org.jboss.netty.handler.codec.http.HttpRequest nettyRequest)

getAsyncHandler

protected final AsyncHandler<V> getAsyncHandler()

getKeepAlive

protected final boolean getKeepAlive()

setKeepAlive

protected final void setKeepAlive(boolean keepAlive)

getHttpResponse

protected final org.jboss.netty.handler.codec.http.HttpResponse getHttpResponse()

setHttpResponse

protected final void setHttpResponse(org.jboss.netty.handler.codec.http.HttpResponse httpResponse)

incrementAndGetCurrentRedirectCount

protected int incrementAndGetCurrentRedirectCount()

setReaperFuture

protected void setReaperFuture(java.util.concurrent.Future<?> reaperFuture)

isInAuth

protected boolean isInAuth()

getAndSetAuth

protected boolean getAndSetAuth(boolean inDigestAuth)

getState

protected com.ning.http.client.providers.netty.NettyResponseFuture.STATE getState()

setState

protected void setState(com.ning.http.client.providers.netty.NettyResponseFuture.STATE state)

getAndSetStatusReceived

public boolean getAndSetStatusReceived(boolean sr)

touch

protected void touch()

provider

protected NettyAsyncHttpProvider provider()

attachChannel

protected void attachChannel(org.jboss.netty.channel.Channel channel)
Attach a Channel for further re-use. This usually happens when the request gets redirected (301, 302, 401, 407) but we haven't consumed all the body bytes yet.

Parameters:
channel - The Channel to later re-use.

channel

protected org.jboss.netty.channel.Channel channel()
Return the channel that was previously used. This usually means the request has been redirected.

Returns:
the previously used channel.

canRetry

protected boolean canRetry()

cannotBeReplay

public boolean cannotBeReplay()
Return true if the Future cannot be recovered. There is some scenario where a connection can be closed by an unexpected IOException, and in some situation we can recover from that exception.

Returns:
true if that Future cannot be recovered.

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object


Copyright © 2010. All Rights Reserved.