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 2022/07/12 20:19:30 UTC
[httpcomponents-core] branch master updated: Added `#close` method that takes an optional Timeout as a parameter.
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-core.git
The following commit(s) were added to refs/heads/master by this push:
new 41cd03ae7 Added `#close` method that takes an optional Timeout as a parameter.
41cd03ae7 is described below
commit 41cd03ae79623acb86b54fb1af335a293e942925
Author: Arturo Bernal <ar...@gmail.com>
AuthorDate: Fri Jul 8 23:41:25 2022 +0200
Added `#close` method that takes an optional Timeout as a parameter.
---
.../hc/core5/http/impl/bootstrap/HttpServer.java | 16 +++++++++++++++-
.../hc/core5/reactor/AbstractSingleCoreIOReactor.java | 18 +++++++++++++++++-
.../apache/hc/core5/reactor/MultiCoreIOReactor.java | 18 +++++++++++++++++-
3 files changed, 49 insertions(+), 3 deletions(-)
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 0e293b71e..410d6bed2 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.Closer;
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 @@ public class HttpServer implements ModalCloseable {
@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 3989e7368..b2834d3ed 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.CloseMode;
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 @@ abstract class AbstractSingleCoreIOReactor implements IOReactor {
@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 d4d4868ab..7be876463 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.CloseMode;
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 @@ class MultiCoreIOReactor implements IOReactor {
@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();
}