Added `#close` method that takes an optional Timeout as a parameter.
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpServer.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpServer.java
index 0e293b7..410d6be 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpServer.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpServer.java
@@ -57,6 +57,7 @@
import org.apache.hc.core5.io.ModalCloseable;
import org.apache.hc.core5.util.Args;
import org.apache.hc.core5.util.TimeValue;
+import org.apache.hc.core5.util.Timeout;
/**
* HTTP/1.1 server side message exchange handler.
@@ -184,10 +185,23 @@
@Override
public void close(final CloseMode closeMode) {
+ close(closeMode, Timeout.ofSeconds(5));
+ }
+
+ /**
+ * Closes this process or endpoint and releases any system resources associated
+ * with it. If the endpoint or the process is already closed then invoking this
+ * method has no effect.
+ *
+ * @param closeMode How to close the receiver.
+ * @param timeout How long to wait for the HttpServer to close gracefully.
+ * @since 5.2
+ */
+ public void close(final CloseMode closeMode, final Timeout timeout) {
initiateShutdown();
if (closeMode == CloseMode.GRACEFUL) {
try {
- awaitTermination(TimeValue.ofSeconds(5));
+ awaitTermination(timeout);
} catch (final InterruptedException ex) {
Thread.currentThread().interrupt();
}
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/reactor/AbstractSingleCoreIOReactor.java b/httpcore5/src/main/java/org/apache/hc/core5/reactor/AbstractSingleCoreIOReactor.java
index 3989e73..b2834d3 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/reactor/AbstractSingleCoreIOReactor.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/reactor/AbstractSingleCoreIOReactor.java
@@ -41,6 +41,7 @@
import org.apache.hc.core5.io.Closer;
import org.apache.hc.core5.util.Args;
import org.apache.hc.core5.util.TimeValue;
+import org.apache.hc.core5.util.Timeout;
abstract class AbstractSingleCoreIOReactor implements IOReactor {
@@ -128,10 +129,25 @@
@Override
public final void close(final CloseMode closeMode) {
+ close(closeMode, Timeout.ofSeconds(5));
+ }
+
+ /**
+ * Shuts down the I/O reactor either gracefully or immediately.
+ * During graceful shutdown individual I/O sessions should be
+ * informed about imminent termination and be given a grace period
+ * to complete the ongoing I/O sessions. During immediate shutdown
+ * all ongoing I/O sessions get aborted immediately.
+ *
+ * @param closeMode How to close the IO reactor.
+ * @param timeout How long to wait for the IO reactor to close gracefully.
+ * @since 5.2
+ */
+ public void close(final CloseMode closeMode, final Timeout timeout) {
if (closeMode == CloseMode.GRACEFUL) {
initiateShutdown();
try {
- awaitShutdown(TimeValue.ofSeconds(5));
+ awaitShutdown(timeout);
} catch (final InterruptedException e) {
Thread.currentThread().interrupt();
}
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/reactor/MultiCoreIOReactor.java b/httpcore5/src/main/java/org/apache/hc/core5/reactor/MultiCoreIOReactor.java
index d4d4868..7be8764 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/reactor/MultiCoreIOReactor.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/reactor/MultiCoreIOReactor.java
@@ -35,6 +35,7 @@
import org.apache.hc.core5.io.Closer;
import org.apache.hc.core5.util.Args;
import org.apache.hc.core5.util.TimeValue;
+import org.apache.hc.core5.util.Timeout;
class MultiCoreIOReactor implements IOReactor {
@@ -109,10 +110,25 @@
@Override
public final void close(final CloseMode closeMode) {
+ close(closeMode, Timeout.ofSeconds(5));
+ }
+
+ /**
+ * Shuts down the I/O reactor either gracefully or immediately.
+ * During graceful shutdown individual I/O sessions should be
+ * informed about imminent termination and be given a grace period
+ * to complete the ongoing I/O sessions. During immediate shutdown
+ * all ongoing I/O sessions get aborted immediately.
+ *
+ * @param closeMode How to close the IO reactor.
+ * @param timeout How long to wait for the IO reactor to close gracefully.
+ * @since 5.2
+ */
+ public void close(final CloseMode closeMode, final Timeout timeout) {
if (closeMode == CloseMode.GRACEFUL) {
initiateShutdown();
try {
- awaitShutdown(TimeValue.ofSeconds(5));
+ awaitShutdown(timeout);
} catch (final InterruptedException e) {
Thread.currentThread().interrupt();
}