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 2021/10/26 12:27:14 UTC
[httpcomponents-client] branch master updated: Make IOReactor IO
session decorator and exception callback configurable.
This is an automated email from the ASF dual-hosted git repository.
olegk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/httpcomponents-client.git
The following commit(s) were added to refs/heads/master by this push:
new 1fb79b9 Make IOReactor IO session decorator and exception callback configurable.
1fb79b9 is described below
commit 1fb79b96f6b79d8146333c4e21f187b74f06d698
Author: Arturo Bernal <ar...@gmail.com>
AuthorDate: Sun Oct 24 16:42:18 2021 +0200
Make IOReactor IO session decorator and exception callback configurable.
---
.../http/impl/async/H2AsyncClientBuilder.java | 33 ++++++++++++++++++++--
1 file changed, 31 insertions(+), 2 deletions(-)
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/H2AsyncClientBuilder.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/H2AsyncClientBuilder.java
index 098acdd..61a73a1 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/H2AsyncClientBuilder.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/H2AsyncClientBuilder.java
@@ -74,6 +74,8 @@ import org.apache.hc.client5.http.routing.HttpRoutePlanner;
import org.apache.hc.client5.http.ssl.DefaultClientTlsStrategy;
import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.concurrent.DefaultThreadFactory;
+import org.apache.hc.core5.function.Callback;
+import org.apache.hc.core5.function.Decorator;
import org.apache.hc.core5.function.Resolver;
import org.apache.hc.core5.http.Header;
import org.apache.hc.core5.http.HttpHost;
@@ -99,6 +101,7 @@ import org.apache.hc.core5.reactor.Command;
import org.apache.hc.core5.reactor.DefaultConnectingIOReactor;
import org.apache.hc.core5.reactor.IOEventHandlerFactory;
import org.apache.hc.core5.reactor.IOReactorConfig;
+import org.apache.hc.core5.reactor.IOSession;
import org.apache.hc.core5.util.Args;
import org.apache.hc.core5.util.TimeValue;
import org.apache.hc.core5.util.VersionInfo;
@@ -207,6 +210,11 @@ public class H2AsyncClientBuilder {
private List<Closeable> closeables;
+
+ private Callback<Exception> ioReactorExceptionCallback;
+
+ private Decorator<IOSession> ioSessionDecorator;
+
public static H2AsyncClientBuilder create() {
return new H2AsyncClientBuilder();
}
@@ -260,6 +268,27 @@ public class H2AsyncClientBuilder {
}
/**
+ * Sets the callback that will be invoked when the client's IOReactor encounters an uncaught exception.
+ *
+ * @since 5.2
+ */
+ public final H2AsyncClientBuilder setIoReactorExceptionCallback(final Callback<Exception> ioReactorExceptionCallback) {
+ this.ioReactorExceptionCallback = ioReactorExceptionCallback;
+ return this;
+ }
+
+
+ /**
+ * Sets the {@link IOSession} {@link Decorator} that will be use with the client's IOReactor.
+ *
+ * @since 5.2
+ */
+ public final H2AsyncClientBuilder setIoSessionDecorator(final Decorator<IOSession> ioSessionDecorator) {
+ this.ioSessionDecorator = ioSessionDecorator;
+ return this;
+ }
+
+ /**
* Adds this protocol interceptor to the head of the protocol processing list.
*/
public final H2AsyncClientBuilder addResponseInterceptorFirst(final HttpResponseInterceptor interceptor) {
@@ -733,8 +762,8 @@ public class H2AsyncClientBuilder {
ioEventHandlerFactory,
ioReactorConfig != null ? ioReactorConfig : IOReactorConfig.DEFAULT,
threadFactory != null ? threadFactory : new DefaultThreadFactory("httpclient-dispatch", true),
- LoggingIOSessionDecorator.INSTANCE,
- LoggingExceptionCallback.INSTANCE,
+ ioSessionDecorator != null ? ioSessionDecorator : LoggingIOSessionDecorator.INSTANCE,
+ ioReactorExceptionCallback != null ? ioReactorExceptionCallback : LoggingExceptionCallback.INSTANCE,
null,
ioSession -> ioSession.enqueue(new ShutdownCommand(CloseMode.GRACEFUL), Command.Priority.IMMEDIATE));