Added option to set an IOSessionListener on async client builders

This commit is contained in:
cda007 2022-02-18 11:32:30 +01:00 committed by Oleg Kalnichevski
parent 19626731c0
commit 157174543f
2 changed files with 26 additions and 2 deletions

View File

@ -102,6 +102,7 @@ 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.reactor.IOSessionListener;
import org.apache.hc.core5.util.Args;
import org.apache.hc.core5.util.TimeValue;
import org.apache.hc.core5.util.VersionInfo;
@ -171,6 +172,7 @@ public class H2AsyncClientBuilder {
}
private IOReactorConfig ioReactorConfig;
private IOSessionListener ioSessionListener;
private H2Config h2Config;
private CharCodingConfig charCodingConfig;
private SchemePortResolver schemePortResolver;
@ -239,6 +241,16 @@ public class H2AsyncClientBuilder {
return this;
}
/**
* Sets {@link IOSessionListener} listener.
*
* @since 5.2
*/
public final H2AsyncClientBuilder setIOSessionListener(final IOSessionListener ioSessionListener) {
this.ioSessionListener = ioSessionListener;
return this;
}
/**
* Sets {@link CharCodingConfig} configuration.
*/
@ -764,7 +776,7 @@ public class H2AsyncClientBuilder {
threadFactory != null ? threadFactory : new DefaultThreadFactory("httpclient-dispatch", true),
ioSessionDecorator != null ? ioSessionDecorator : LoggingIOSessionDecorator.INSTANCE,
ioReactorExceptionCallback != null ? ioReactorExceptionCallback : LoggingExceptionCallback.INSTANCE,
null,
ioSessionListener,
ioSession -> ioSession.enqueue(new ShutdownCommand(CloseMode.GRACEFUL), Command.Priority.IMMEDIATE));
if (execInterceptors != null) {

View File

@ -112,6 +112,7 @@ 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.reactor.IOSessionListener;
import org.apache.hc.core5.util.Args;
import org.apache.hc.core5.util.TimeValue;
import org.apache.hc.core5.util.VersionInfo;
@ -207,6 +208,7 @@ public class HttpAsyncClientBuilder {
private AsyncClientConnectionManager connManager;
private boolean connManagerShared;
private IOReactorConfig ioReactorConfig;
private IOSessionListener ioSessionListener;
private Callback<Exception> ioReactorExceptionCallback;
private Http1Config h1Config;
private H2Config h2Config;
@ -319,6 +321,16 @@ public class HttpAsyncClientBuilder {
return this;
}
/**
* Sets {@link IOSessionListener} listener.
*
* @since 5.2
*/
public final HttpAsyncClientBuilder setIOSessionListener(final IOSessionListener ioSessionListener) {
this.ioSessionListener = ioSessionListener;
return this;
}
/**
* Sets the callback that will be invoked when the client's IOReactor encounters an uncaught exception.
*
@ -934,7 +946,7 @@ public class HttpAsyncClientBuilder {
threadFactory != null ? threadFactory : new DefaultThreadFactory("httpclient-dispatch", true),
ioSessionDecorator != null ? ioSessionDecorator : LoggingIOSessionDecorator.INSTANCE,
ioReactorExceptionCallback != null ? ioReactorExceptionCallback : LoggingExceptionCallback.INSTANCE,
null,
ioSessionListener,
ioSession -> ioSession.enqueue(new ShutdownCommand(CloseMode.GRACEFUL), Command.Priority.IMMEDIATE));
if (execInterceptors != null) {