diff --git a/client/src/main/java/org/asynchttpclient/netty/NettyResponseFuture.java b/client/src/main/java/org/asynchttpclient/netty/NettyResponseFuture.java index 792eff96e4..8e362c1711 100755 --- a/client/src/main/java/org/asynchttpclient/netty/NettyResponseFuture.java +++ b/client/src/main/java/org/asynchttpclient/netty/NettyResponseFuture.java @@ -36,6 +36,7 @@ import org.asynchttpclient.Request; import org.asynchttpclient.channel.pool.ConnectionPoolPartitioning; import org.asynchttpclient.future.AbstractListenableFuture; +import org.asynchttpclient.netty.channel.ChannelState; import org.asynchttpclient.netty.channel.Channels; import org.asynchttpclient.netty.request.NettyRequest; import org.asynchttpclient.netty.timeout.TimeoutsHolder; @@ -53,10 +54,6 @@ public final class NettyResponseFuture extends AbstractListenableFuture { private static final Logger LOGGER = LoggerFactory.getLogger(NettyResponseFuture.class); - public enum STATE { - NEW, POOLED, RECONNECTED, CLOSED, - } - private final long start = millisTime(); private final ConnectionPoolPartitioning connectionPoolPartitioning; private final ProxyServer proxyServer; @@ -72,7 +69,7 @@ public enum STATE { private final AtomicBoolean inProxyAuth = new AtomicBoolean(false); private final AtomicBoolean statusReceived = new AtomicBoolean(false); private final AtomicLong touch = new AtomicLong(millisTime()); - private final AtomicReference state = new AtomicReference<>(STATE.NEW); + private final AtomicReference channelState = new AtomicReference<>(ChannelState.NEW); private final AtomicBoolean contentProcessed = new AtomicBoolean(false); private final AtomicInteger currentRetry = new AtomicInteger(0); private final AtomicBoolean onThrowableCalled = new AtomicBoolean(false); @@ -348,12 +345,12 @@ public AtomicBoolean getInProxyAuth() { return inProxyAuth; } - public STATE getState() { - return state.get(); + public ChannelState getChannelState() { + return channelState.get(); } - public void setState(STATE state) { - this.state.set(state); + public void setChannelState(ChannelState channelState) { + this.channelState.set(channelState); } public boolean getAndSetStatusReceived(boolean sr) { diff --git a/client/src/main/java/org/asynchttpclient/netty/channel/ChannelState.java b/client/src/main/java/org/asynchttpclient/netty/channel/ChannelState.java new file mode 100644 index 0000000000..a76df2b90d --- /dev/null +++ b/client/src/main/java/org/asynchttpclient/netty/channel/ChannelState.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2015 AsyncHttpClient Project. All rights reserved. + * + * This program is licensed to you under the Apache License Version 2.0, + * and you may not use this file except in compliance with the Apache License Version 2.0. + * You may obtain a copy of the Apache License Version 2.0 at + * http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the Apache License Version 2.0 is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under. + */ +package org.asynchttpclient.netty.channel; + +public enum ChannelState { + NEW, POOLED, RECONNECTED, CLOSED, +} \ No newline at end of file diff --git a/client/src/main/java/org/asynchttpclient/netty/channel/NettyConnectListener.java b/client/src/main/java/org/asynchttpclient/netty/channel/NettyConnectListener.java index f130f59bdc..6c975b9357 100755 --- a/client/src/main/java/org/asynchttpclient/netty/channel/NettyConnectListener.java +++ b/client/src/main/java/org/asynchttpclient/netty/channel/NettyConnectListener.java @@ -119,7 +119,7 @@ private void onFutureFailure(Channel channel, Throwable cause) { LOGGER.debug("Trying to recover from failing to connect channel {} with a retry value of {} ", channel, canRetry); if (canRetry// && cause != null// - && (future.getState() != NettyResponseFuture.STATE.NEW || StackTraceInspector.recoverOnNettyDisconnectException(cause))) { + && (future.getChannelState() != ChannelState.NEW || StackTraceInspector.recoverOnNettyDisconnectException(cause))) { if (requestSender.retry(future)) { return; diff --git a/client/src/main/java/org/asynchttpclient/netty/handler/HttpProtocol.java b/client/src/main/java/org/asynchttpclient/netty/handler/HttpProtocol.java index 1caf51d9cf..9f481c58ad 100755 --- a/client/src/main/java/org/asynchttpclient/netty/handler/HttpProtocol.java +++ b/client/src/main/java/org/asynchttpclient/netty/handler/HttpProtocol.java @@ -44,6 +44,7 @@ import org.asynchttpclient.netty.NettyResponseHeaders; import org.asynchttpclient.netty.NettyResponseStatus; import org.asynchttpclient.netty.channel.ChannelManager; +import org.asynchttpclient.netty.channel.ChannelState; import org.asynchttpclient.netty.channel.Channels; import org.asynchttpclient.netty.request.NettyRequestSender; import org.asynchttpclient.ntlm.NtlmEngine; @@ -202,7 +203,7 @@ private boolean exitAfterHandling401(// } // FIXME what's this??? - future.setState(NettyResponseFuture.STATE.NEW); + future.setChannelState(ChannelState.NEW); HttpHeaders requestHeaders = new DefaultHttpHeaders().add(request.getHeaders()); switch (realm.getScheme()) { @@ -333,7 +334,7 @@ private boolean exitAfterHandling407(// } // FIXME what's this??? - future.setState(NettyResponseFuture.STATE.NEW); + future.setChannelState(ChannelState.NEW); HttpHeaders requestHeaders = new DefaultHttpHeaders().add(request.getHeaders()); switch (proxyRealm.getScheme()) { diff --git a/client/src/main/java/org/asynchttpclient/netty/request/NettyRequestSender.java b/client/src/main/java/org/asynchttpclient/netty/request/NettyRequestSender.java index 67c70775b1..cc07262674 100755 --- a/client/src/main/java/org/asynchttpclient/netty/request/NettyRequestSender.java +++ b/client/src/main/java/org/asynchttpclient/netty/request/NettyRequestSender.java @@ -45,6 +45,7 @@ import org.asynchttpclient.netty.Callback; import org.asynchttpclient.netty.NettyResponseFuture; import org.asynchttpclient.netty.channel.ChannelManager; +import org.asynchttpclient.netty.channel.ChannelState; import org.asynchttpclient.netty.channel.Channels; import org.asynchttpclient.netty.channel.NettyConnectListener; import org.asynchttpclient.netty.timeout.ReadTimeoutTimerTask; @@ -207,7 +208,7 @@ private ListenableFuture sendRequestWithCachedChannel(Request request, Pr if (asyncHandler instanceof AsyncHandlerExtensions) AsyncHandlerExtensions.class.cast(asyncHandler).onConnectionPooled(channel); - future.setState(NettyResponseFuture.STATE.POOLED); + future.setChannelState(ChannelState.POOLED); future.attachChannel(channel, false); LOGGER.debug("Using cached Channel {} for {} '{}'", channel, future.getNettyRequest().getHttpRequest().getMethod(), future.getNettyRequest().getHttpRequest().getUri()); @@ -359,7 +360,7 @@ public void abort(Channel channel, NettyResponseFuture future, Throwable t) { channelManager.closeChannel(channel); if (!future.isDone()) { - future.setState(NettyResponseFuture.STATE.CLOSED); + future.setChannelState(ChannelState.CLOSED); LOGGER.debug("Aborting Future {}\n", future); LOGGER.debug(t.getMessage(), t); future.abort(t); @@ -380,7 +381,7 @@ public boolean retry(NettyResponseFuture future) { return false; if (future.canBeReplayed()) { - future.setState(NettyResponseFuture.STATE.RECONNECTED); + future.setChannelState(ChannelState.RECONNECTED); future.getAndSetStatusReceived(false); LOGGER.debug("Trying to recover request {}\n", future.getNettyRequest().getHttpRequest()); @@ -467,7 +468,7 @@ public void replayRequest(final NettyResponseFuture future, FilterContext fc, Request newRequest = fc.getRequest(); future.setAsyncHandler(fc.getAsyncHandler()); - future.setState(NettyResponseFuture.STATE.NEW); + future.setChannelState(ChannelState.NEW); future.touch(); LOGGER.debug("\n\nReplaying Request {}\n for Future {}\n", newRequest, future); diff --git a/client/src/main/java/org/asynchttpclient/netty/request/ProgressListener.java b/client/src/main/java/org/asynchttpclient/netty/request/ProgressListener.java index ac8b53ef9b..3f5b9fe421 100755 --- a/client/src/main/java/org/asynchttpclient/netty/request/ProgressListener.java +++ b/client/src/main/java/org/asynchttpclient/netty/request/ProgressListener.java @@ -22,6 +22,7 @@ import org.asynchttpclient.AsyncHandler; import org.asynchttpclient.handler.ProgressAsyncHandler; import org.asynchttpclient.netty.NettyResponseFuture; +import org.asynchttpclient.netty.channel.ChannelState; import org.asynchttpclient.netty.channel.Channels; import org.asynchttpclient.netty.future.StackTraceInspector; import org.slf4j.Logger; @@ -49,7 +50,7 @@ public ProgressListener(AsyncHandler asyncHandler,// private boolean abortOnThrowable(Throwable cause, Channel channel) { - if (cause != null && future.getState() != NettyResponseFuture.STATE.NEW) { + if (cause != null && future.getChannelState() != ChannelState.NEW) { if (cause instanceof IllegalStateException || cause instanceof ClosedChannelException || StackTraceInspector.recoverOnReadOrWriteException(cause)) { LOGGER.debug(cause.getMessage(), cause); Channels.silentlyCloseChannel(channel);