You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2018/10/17 12:31:28 UTC
httpcomponents-client git commit: AsyncConnectionEndpoint to support
graceful and immediate close modes [Forced Update!]
Repository: httpcomponents-client
Updated Branches:
refs/heads/master e2c8b7437 -> c44663982 (forced update)
AsyncConnectionEndpoint to support graceful and immediate close modes
Project: http://git-wip-us.apache.org/repos/asf/httpcomponents-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/httpcomponents-client/commit/c4466398
Tree: http://git-wip-us.apache.org/repos/asf/httpcomponents-client/tree/c4466398
Diff: http://git-wip-us.apache.org/repos/asf/httpcomponents-client/diff/c4466398
Branch: refs/heads/master
Commit: c4466398201f3b1baca31a3b8ef451ca0616407f
Parents: a1d6db5
Author: Oleg Kalnichevski <ol...@apache.org>
Authored: Wed Oct 17 14:25:20 2018 +0200
Committer: Oleg Kalnichevski <ol...@apache.org>
Committed: Wed Oct 17 14:31:12 2018 +0200
----------------------------------------------------------------------
.../async/InternalHttpAsyncExecRuntime.java | 8 ++----
.../PoolingAsyncClientConnectionManager.java | 18 ++----------
.../http/nio/AsyncConnectionEndpoint.java | 30 +++++++++++---------
3 files changed, 22 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/c4466398/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalHttpAsyncExecRuntime.java
----------------------------------------------------------------------
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalHttpAsyncExecRuntime.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalHttpAsyncExecRuntime.java
index 5f513da..93340f8 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalHttpAsyncExecRuntime.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalHttpAsyncExecRuntime.java
@@ -27,7 +27,6 @@
package org.apache.hc.client5.http.impl.async;
-import java.io.IOException;
import java.io.InterruptedIOException;
import java.util.concurrent.atomic.AtomicReference;
@@ -45,6 +44,7 @@ import org.apache.hc.core5.http.nio.AsyncClientExchangeHandler;
import org.apache.hc.core5.http.nio.AsyncPushConsumer;
import org.apache.hc.core5.http.nio.HandlerFactory;
import org.apache.hc.core5.http2.HttpVersionPolicy;
+import org.apache.hc.core5.io.CloseMode;
import org.apache.hc.core5.reactor.ConnectionInitiator;
import org.apache.hc.core5.util.TimeValue;
import org.slf4j.Logger;
@@ -121,14 +121,10 @@ class InternalHttpAsyncExecRuntime implements AsyncExecRuntime {
private void discardEndpoint(final AsyncConnectionEndpoint endpoint) {
try {
- endpoint.shutdown();
+ endpoint.close(CloseMode.IMMEDIATE);
if (log.isDebugEnabled()) {
log.debug(ConnPoolSupport.getId(endpoint) + ": discarding endpoint");
}
- } catch (final IOException ex) {
- if (log.isDebugEnabled()) {
- log.debug(ConnPoolSupport.getId(endpoint) + ": " + ex.getMessage(), ex);
- }
} finally {
manager.release(endpoint, null, TimeValue.ZERO_MILLISECONDS);
}
http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/c4466398/httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java
----------------------------------------------------------------------
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java
index 94570c2..49acdd1 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java
@@ -27,7 +27,6 @@
package org.apache.hc.client5.http.impl.nio;
-import java.io.IOException;
import java.net.InetSocketAddress;
import java.util.Set;
import java.util.concurrent.Future;
@@ -512,24 +511,13 @@ public class PoolingAsyncClientConnectionManager implements AsyncClientConnectio
}
@Override
- public void shutdown() throws IOException {
+ public void close(final CloseMode closeMode) {
final PoolEntry<HttpRoute, ManagedAsyncClientConnection> poolEntry = poolEntryRef.get();
if (poolEntry != null) {
if (log.isDebugEnabled()) {
- log.debug(id + ": shutdown " + CloseMode.IMMEDIATE);
+ log.debug(id + ": shutdown " + closeMode);
}
- poolEntry.discardConnection(CloseMode.IMMEDIATE);
- }
- }
-
- @Override
- public void close() throws IOException {
- final PoolEntry<HttpRoute, ManagedAsyncClientConnection> poolEntry = poolEntryRef.get();
- if (poolEntry != null) {
- if (log.isDebugEnabled()) {
- log.debug(id + ": shutdown " + CloseMode.GRACEFUL);
- }
- poolEntry.discardConnection(CloseMode.GRACEFUL);
+ poolEntry.discardConnection(closeMode);
}
}
http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/c4466398/httpclient5/src/main/java/org/apache/hc/client5/http/nio/AsyncConnectionEndpoint.java
----------------------------------------------------------------------
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/nio/AsyncConnectionEndpoint.java b/httpclient5/src/main/java/org/apache/hc/client5/http/nio/AsyncConnectionEndpoint.java
index 692863d..3acf72f 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/nio/AsyncConnectionEndpoint.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/nio/AsyncConnectionEndpoint.java
@@ -27,7 +27,6 @@
package org.apache.hc.client5.http.nio;
-import java.io.Closeable;
import java.io.IOException;
import java.util.concurrent.Future;
@@ -43,6 +42,8 @@ import org.apache.hc.core5.http.nio.HandlerFactory;
import org.apache.hc.core5.http.nio.support.BasicClientExchangeHandler;
import org.apache.hc.core5.http.protocol.HttpContext;
import org.apache.hc.core5.http.protocol.HttpCoreContext;
+import org.apache.hc.core5.io.CloseMode;
+import org.apache.hc.core5.io.ModalCloseable;
/**
* Client connection endpoint that can be used to execute message exchanges.
@@ -50,20 +51,29 @@ import org.apache.hc.core5.http.protocol.HttpCoreContext;
* @since 5.0
*/
@Contract(threading = ThreadingBehavior.SAFE)
-public abstract class AsyncConnectionEndpoint implements Closeable {
+public abstract class AsyncConnectionEndpoint implements ModalCloseable {
public abstract void execute(
AsyncClientExchangeHandler exchangeHandler,
HandlerFactory<AsyncPushConsumer> pushHandlerFactory,
HttpContext context);
- public void execute(
+ public abstract boolean isConnected();
+
+ public abstract void setSocketTimeout(int timeout);
+
+ @Override
+ public final void close() throws IOException {
+ close(CloseMode.GRACEFUL);
+ }
+
+ public final void execute(
final AsyncClientExchangeHandler exchangeHandler,
final HttpContext context) {
execute(exchangeHandler, null, context);
}
- public <T> Future<T> execute(
+ public final <T> Future<T> execute(
final AsyncRequestProducer requestProducer,
final AsyncResponseConsumer<T> responseConsumer,
final HandlerFactory<AsyncPushConsumer> pushHandlerFactory,
@@ -94,7 +104,7 @@ public abstract class AsyncConnectionEndpoint implements Closeable {
return future;
}
- public <T> Future<T> execute(
+ public final <T> Future<T> execute(
final AsyncRequestProducer requestProducer,
final AsyncResponseConsumer<T> responseConsumer,
final HttpContext context,
@@ -102,7 +112,7 @@ public abstract class AsyncConnectionEndpoint implements Closeable {
return execute(requestProducer, responseConsumer, null, context, callback);
}
- public <T> Future<T> execute(
+ public final <T> Future<T> execute(
final AsyncRequestProducer requestProducer,
final AsyncResponseConsumer<T> responseConsumer,
final HandlerFactory<AsyncPushConsumer> pushHandlerFactory,
@@ -110,17 +120,11 @@ public abstract class AsyncConnectionEndpoint implements Closeable {
return execute(requestProducer, responseConsumer, pushHandlerFactory, null, callback);
}
- public <T> Future<T> execute(
+ public final <T> Future<T> execute(
final AsyncRequestProducer requestProducer,
final AsyncResponseConsumer<T> responseConsumer,
final FutureCallback<T> callback) {
return execute(requestProducer, responseConsumer, null, null, callback);
}
- public abstract boolean isConnected();
-
- public abstract void setSocketTimeout(int timeout);
-
- public abstract void shutdown() throws IOException;
-
}