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();
             }