Nice! :-)

Gary

---------- Forwarded message ---------
From: <[email protected]>
Date: Fri, Oct 5, 2018 at 2:24 AM
Subject: httpcomponents-core git commit: Use TimeValue / Timeout to
represent time values in config classes
To: <[email protected]>


Repository: httpcomponents-core
Updated Branches:
  refs/heads/master 7834aa523 -> 69a0ff7b2


Use TimeValue / Timeout to represent time values in config classes


Project: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/repo
Commit:
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/commit/69a0ff7b
Tree:
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/tree/69a0ff7b
Diff:
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/diff/69a0ff7b

Branch: refs/heads/master
Commit: 69a0ff7b2c51c89d0d9d6c2046cce98777d095f4
Parents: 7834aa5
Author: Oleg Kalnichevski <[email protected]>
Authored: Fri Oct 5 10:11:35 2018 +0200
Committer: Oleg Kalnichevski <[email protected]>
Committed: Fri Oct 5 10:18:01 2018 +0200

----------------------------------------------------------------------
 .../core5/testing/nio/Http1IntegrationTest.java |  3 +-
 .../apache/hc/core5/http/config/H1Config.java   | 29 +++++++++++-------
 .../http/impl/nio/ClientHttp1StreamHandler.java |  2 +-
 .../hc/core5/reactor/IOReactorConfig.java       | 31 ++++++++++----------
 .../hc/core5/reactor/SingleCoreIOReactor.java   | 10 +++----
 .../reactor/SingleCoreListeningIOReactor.java   |  6 ++--
 6 files changed, 45 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/69a0ff7b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http1IntegrationTest.java
----------------------------------------------------------------------
diff --git
a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http1IntegrationTest.java
b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http1IntegrationTest.java
index 2e885d6..4b41dfe 100644
---
a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http1IntegrationTest.java
+++
b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/Http1IntegrationTest.java
@@ -128,6 +128,7 @@ import org.apache.hc.core5.testing.SSLTestContexts;
 import org.apache.hc.core5.util.CharArrayBuffer;
 import org.apache.hc.core5.util.TextUtils;
 import org.apache.hc.core5.util.TimeValue;
+import org.apache.hc.core5.util.Timeout;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -872,7 +873,7 @@ public class Http1IntegrationTest extends
InternalHttp1ServerTestBase {
         });
         final InetSocketAddress serverEndpoint = server.start();

-
client.start(H1Config.custom().setWaitForContinueTimeoutMillis(100).build());
+
client.start(H1Config.custom().setWaitForContinueTimeout(Timeout.ofMillis(100)).build());
         final Future<ClientSessionEndpoint> connectFuture = client.connect(
                 "localhost", serverEndpoint.getPort(), TIMEOUT);
         final ClientSessionEndpoint streamEndpoint = connectFuture.get();

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/69a0ff7b/httpcore5/src/main/java/org/apache/hc/core5/http/config/H1Config.java
----------------------------------------------------------------------
diff --git
a/httpcore5/src/main/java/org/apache/hc/core5/http/config/H1Config.java
b/httpcore5/src/main/java/org/apache/hc/core5/http/config/H1Config.java
index 47bfb0f..ca44a01 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/config/H1Config.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/config/H1Config.java
@@ -28,6 +28,7 @@
 package org.apache.hc.core5.http.config;

 import org.apache.hc.core5.util.Args;
+import org.apache.hc.core5.util.Timeout;

 /**
  * HTTP/1.1 protocol parameters.
@@ -45,17 +46,17 @@ public class H1Config {

     private final int bufferSize;
     private final int chunkSizeHint;
-    private final int waitForContinueTimeoutMillis;
+    private final Timeout waitForContinueTimeout;
     private final int maxLineLength;
     private final int maxHeaderCount;
     private final int maxEmptyLineCount;

-    H1Config(final int bufferSize, final int chunkSizeHint, final int
waitForContinueTimeout,
+    H1Config(final int bufferSize, final int chunkSizeHint, final Timeout
waitForContinueTimeout,
              final int maxLineLength, final int maxHeaderCount, final int
maxEmptyLineCount) {
         super();
         this.bufferSize = bufferSize;
         this.chunkSizeHint = chunkSizeHint;
-        this.waitForContinueTimeoutMillis = waitForContinueTimeout;
+        this.waitForContinueTimeout = waitForContinueTimeout;
         this.maxLineLength = maxLineLength;
         this.maxHeaderCount = maxHeaderCount;
         this.maxEmptyLineCount = maxEmptyLineCount;
@@ -69,8 +70,8 @@ public class H1Config {
         return chunkSizeHint;
     }

-    public int getWaitForContinueTimeoutMillis() {
-        return waitForContinueTimeoutMillis;
+    public Timeout getWaitForContinueTimeout() {
+        return waitForContinueTimeout;
     }

     public int getMaxLineLength() {
@@ -90,7 +91,7 @@ public class H1Config {
         final StringBuilder builder = new StringBuilder();
         builder.append("[bufferSize=").append(bufferSize)
                 .append(", chunkSizeHint=").append(chunkSizeHint)
-                .append(",
waitForContinueTimeout=").append(waitForContinueTimeoutMillis)
+                .append(",
waitForContinueTimeout=").append(waitForContinueTimeout)
                 .append(", maxLineLength=").append(maxLineLength)
                 .append(", maxHeaderCount=").append(maxHeaderCount)
                 .append(", maxEmptyLineCount=").append(maxEmptyLineCount)
@@ -107,7 +108,7 @@ public class H1Config {
         return new Builder()
                 .setBufferSize(config.getBufferSize())
                 .setChunkSizeHint(config.getChunkSizeHint())
-
.setWaitForContinueTimeoutMillis(config.getWaitForContinueTimeoutMillis())
+
.setWaitForContinueTimeout(config.getWaitForContinueTimeout())
                 .setMaxHeaderCount(config.getMaxHeaderCount())
                 .setMaxLineLength(config.getMaxLineLength())
                 .setMaxEmptyLineCount(config.maxEmptyLineCount);
@@ -117,7 +118,7 @@ public class H1Config {

         private int bufferSize;
         private int chunkSizeHint;
-        private int waitForContinueTimeout;
+        private Timeout waitForContinueTimeout;
         private int maxLineLength;
         private int maxHeaderCount;
         private int maxEmptyLineCount;
@@ -125,7 +126,7 @@ public class H1Config {
         Builder() {
             this.bufferSize = -1;
             this.chunkSizeHint = -1;
-            this.waitForContinueTimeout = 3000;
+            this.waitForContinueTimeout = Timeout.ofSeconds(3);
             this.maxLineLength = -1;
             this.maxHeaderCount = -1;
             this.maxEmptyLineCount = 10;
@@ -141,7 +142,7 @@ public class H1Config {
             return this;
         }

-        public Builder setWaitForContinueTimeoutMillis(final int
waitForContinueTimeout) {
+        public Builder setWaitForContinueTimeout(final Timeout
waitForContinueTimeout) {
             this.waitForContinueTimeout = waitForContinueTimeout;
             return this;
         }
@@ -162,7 +163,13 @@ public class H1Config {
         }

         public H1Config build() {
-            return new H1Config(bufferSize > 0 ? bufferSize : 8192,
chunkSizeHint, waitForContinueTimeout, maxLineLength, maxHeaderCount,
maxEmptyLineCount);
+            return new H1Config(
+                    bufferSize > 0 ? bufferSize : 8192,
+                    chunkSizeHint,
+                    waitForContinueTimeout != null ?
waitForContinueTimeout : Timeout.ofSeconds(3),
+                    maxLineLength,
+                    maxHeaderCount,
+                    maxEmptyLineCount);
         }

     }

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/69a0ff7b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1StreamHandler.java
----------------------------------------------------------------------
diff --git
a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1StreamHandler.java
b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1StreamHandler.java
index 56766af..c5e20b6 100644
---
a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1StreamHandler.java
+++
b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1StreamHandler.java
@@ -163,7 +163,7 @@ class ClientHttp1StreamHandler implements
ResourceHolder {
                 if (expectContinue) {
                     requestState = MessageState.ACK;
                     timeout = outputChannel.getSocketTimeoutMillis();
-
outputChannel.setSocketTimeoutMillis(h1Config.getWaitForContinueTimeoutMillis());
+
outputChannel.setSocketTimeoutMillis(h1Config.getWaitForContinueTimeout().toMillisIntBound());
                 } else {
                     requestState = MessageState.BODY;
                     exchangeHandler.produce(internalDataChannel);

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/69a0ff7b/httpcore5/src/main/java/org/apache/hc/core5/reactor/IOReactorConfig.java
----------------------------------------------------------------------
diff --git
a/httpcore5/src/main/java/org/apache/hc/core5/reactor/IOReactorConfig.java
b/httpcore5/src/main/java/org/apache/hc/core5/reactor/IOReactorConfig.java
index b89b8e4..0b67b88 100644
---
a/httpcore5/src/main/java/org/apache/hc/core5/reactor/IOReactorConfig.java
+++
b/httpcore5/src/main/java/org/apache/hc/core5/reactor/IOReactorConfig.java
@@ -45,7 +45,7 @@ public final class IOReactorConfig {

     public static final IOReactorConfig DEFAULT = new Builder().build();

-    private final long selectIntervalMillis;
+    private final TimeValue selectInterval;
     private final int ioThreadCount;
     private final Timeout  soTimeout;
     private final boolean soReuseAddress;
@@ -57,7 +57,7 @@ public final class IOReactorConfig {
     private final int backlogSize;

     IOReactorConfig(
-            final long selectIntervalMillis,
+            final TimeValue selectInterval,
             final int ioThreadCount,
             final Timeout soTimeout,
             final boolean soReuseAddress,
@@ -68,8 +68,8 @@ public final class IOReactorConfig {
             final int rcvBufSize,
             final int backlogSize) {
         super();
-        this.selectIntervalMillis = selectIntervalMillis;
-        this.ioThreadCount = Args.positive(ioThreadCount, "ioThreadCount");
+        this.selectInterval = selectInterval;
+        this.ioThreadCount = ioThreadCount;
         this.soTimeout = soTimeout;
         this.soReuseAddress = soReuseAddress;
         this.soLinger = soLinger;
@@ -81,14 +81,14 @@ public final class IOReactorConfig {
     }

     /**
-     * Determines time interval in milliseconds at which the I/O reactor
wakes up to check for
-     * timed out sessions and session requests.
+     * Determines time interval at which the I/O reactor wakes up to check
for timed out sessions
+     * and session requests.
      * <p>
      * Default: {@code 1000} milliseconds.
      * </p>
      */
-    public long getSelectIntervalMillis() {
-        return this.selectIntervalMillis;
+    public TimeValue getSelectInterval() {
+        return this.selectInterval;
     }

     /**
@@ -210,7 +210,7 @@ public final class IOReactorConfig {
     public static Builder copy(final IOReactorConfig config) {
         Args.notNull(config, "I/O reactor config");
         return new Builder()
-            .setSelectIntervalMillis(config.getSelectIntervalMillis())
+            .setSelectInterval(config.getSelectInterval())
             .setIoThreadCount(config.getIoThreadCount())
             .setSoTimeout(config.getSoTimeout())
             .setSoReuseAddress(config.isSoReuseAddress())
@@ -251,7 +251,7 @@ public final class IOReactorConfig {
             DefaultMaxIoThreadCount = defaultMaxIoThreadCount;
         }

-        private long selectIntervalMillis;
+        private TimeValue selectInterval;
         private int ioThreadCount;
         private Timeout  soTimeout;
         private boolean soReuseAddress;
@@ -263,7 +263,7 @@ public final class IOReactorConfig {
         private int backlogSize;

         Builder() {
-            this.selectIntervalMillis = 1000;
+            this.selectInterval = TimeValue.ofMicroseconds(1000);
             this.ioThreadCount = Builder.getDefaultMaxIoThreadCount();
             this.soTimeout = Timeout.ZERO_MILLISECONDS;
             this.soReuseAddress = false;
@@ -275,8 +275,8 @@ public final class IOReactorConfig {
             this.backlogSize = 0;
         }

-        public Builder setSelectIntervalMillis(final long
selectIntervalMillis) {
-            this.selectIntervalMillis = selectIntervalMillis;
+        public Builder setSelectInterval(final TimeValue selectInterval) {
+            this.selectInterval = selectInterval;
             return this;
         }

@@ -337,7 +337,8 @@ public final class IOReactorConfig {

         public IOReactorConfig build() {
             return new IOReactorConfig(
-                    selectIntervalMillis, ioThreadCount,
+                    selectInterval != null ? selectInterval :
TimeValue.ofMicroseconds(1000),
+                    ioThreadCount,
                     Timeout.defaultsToDisabled(soTimeout),
                     soReuseAddress,
                     TimeValue.defaultsToNegativeOneMillisecond(soLinger),
@@ -351,7 +352,7 @@ public final class IOReactorConfig {
     @Override
     public String toString() {
         final StringBuilder builder = new StringBuilder();
-
builder.append("[selectIntervalMillis=").append(this.selectIntervalMillis)
+
builder.append("[selectIntervalMillis=").append(this.selectInterval)
                 .append(", ioThreadCount=").append(this.ioThreadCount)
                 .append(", soTimeout=").append(this.soTimeout)
                 .append(", soReuseAddress=").append(this.soReuseAddress)

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/69a0ff7b/httpcore5/src/main/java/org/apache/hc/core5/reactor/SingleCoreIOReactor.java
----------------------------------------------------------------------
diff --git
a/httpcore5/src/main/java/org/apache/hc/core5/reactor/SingleCoreIOReactor.java
b/httpcore5/src/main/java/org/apache/hc/core5/reactor/SingleCoreIOReactor.java
index a031de7..ab6c155 100644
---
a/httpcore5/src/main/java/org/apache/hc/core5/reactor/SingleCoreIOReactor.java
+++
b/httpcore5/src/main/java/org/apache/hc/core5/reactor/SingleCoreIOReactor.java
@@ -46,9 +46,9 @@ import org.apache.hc.core5.concurrent.FutureCallback;
 import org.apache.hc.core5.function.Callback;
 import org.apache.hc.core5.function.Decorator;
 import org.apache.hc.core5.io.CloseMode;
+import org.apache.hc.core5.io.Closer;
 import org.apache.hc.core5.net.NamedEndpoint;
 import org.apache.hc.core5.util.Args;
-import org.apache.hc.core5.io.Closer;
 import org.apache.hc.core5.util.TimeValue;

 class SingleCoreIOReactor extends AbstractSingleCoreIOReactor implements
ConnectionInitiator {
@@ -64,7 +64,7 @@ class SingleCoreIOReactor extends
AbstractSingleCoreIOReactor implements Connect
     private final Queue<SocketChannel> channelQueue;
     private final Queue<IOSessionRequest> requestQueue;
     private final AtomicBoolean shutdownInitiated;
-
+    private final long selectTimeoutMillis;
     private volatile long lastTimeoutCheckMillis;

     SingleCoreIOReactor(
@@ -84,6 +84,7 @@ class SingleCoreIOReactor extends
AbstractSingleCoreIOReactor implements Connect
         this.closedSessions = new ConcurrentLinkedQueue<>();
         this.channelQueue = new ConcurrentLinkedQueue<>();
         this.requestQueue = new ConcurrentLinkedQueue<>();
+        this.selectTimeoutMillis =
this.reactorConfig.getSelectInterval().toMillis();
     }

     void enqueueChannel(final SocketChannel socketChannel) throws
IOReactorShutdownException {
@@ -104,10 +105,9 @@ class SingleCoreIOReactor extends
AbstractSingleCoreIOReactor implements Connect

     @Override
     void doExecute() throws IOException {
-        final long selectTimeoutMillis =
this.reactorConfig.getSelectIntervalMillis();
         while (!Thread.currentThread().isInterrupted()) {

-            final int readyCount =
this.selector.select(selectTimeoutMillis);
+            final int readyCount =
this.selector.select(this.selectTimeoutMillis);

             if (getStatus().compareTo(IOReactorStatus.SHUTTING_DOWN) >= 0)
{
                 if (this.shutdownInitiated.compareAndSet(false, true)) {
@@ -159,7 +159,7 @@ class SingleCoreIOReactor extends
AbstractSingleCoreIOReactor implements Connect

     private void validateActiveChannels() {
         final long currentTimeMillis = System.currentTimeMillis();
-        if ((currentTimeMillis - this.lastTimeoutCheckMillis) >=
this.reactorConfig.getSelectIntervalMillis()) {
+        if ((currentTimeMillis - this.lastTimeoutCheckMillis) >=
this.selectTimeoutMillis) {
             this.lastTimeoutCheckMillis = currentTimeMillis;
             for (final SelectionKey key : this.selector.keys()) {
                 checkTimeout(key, currentTimeMillis);

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/69a0ff7b/httpcore5/src/main/java/org/apache/hc/core5/reactor/SingleCoreListeningIOReactor.java
----------------------------------------------------------------------
diff --git
a/httpcore5/src/main/java/org/apache/hc/core5/reactor/SingleCoreListeningIOReactor.java
b/httpcore5/src/main/java/org/apache/hc/core5/reactor/SingleCoreListeningIOReactor.java
index 6496712..91b1b22 100644
---
a/httpcore5/src/main/java/org/apache/hc/core5/reactor/SingleCoreListeningIOReactor.java
+++
b/httpcore5/src/main/java/org/apache/hc/core5/reactor/SingleCoreListeningIOReactor.java
@@ -55,8 +55,8 @@ class SingleCoreListeningIOReactor extends
AbstractSingleCoreIOReactor implement
     private final Callback<SocketChannel> callback;
     private final Queue<ListenerEndpointRequest> requestQueue;
     private final ConcurrentMap<ListenerEndpoint, Boolean> endpoints;
-
     private final AtomicBoolean paused;
+    private final long selectTimeoutMillis;

     SingleCoreListeningIOReactor(
             final Queue<ExceptionEvent> auditLog,
@@ -68,6 +68,7 @@ class SingleCoreListeningIOReactor extends
AbstractSingleCoreIOReactor implement
         this.requestQueue = new ConcurrentLinkedQueue<>();
         this.endpoints = new ConcurrentHashMap<>();
         this.paused = new AtomicBoolean(false);
+        this.selectTimeoutMillis =
this.reactorConfig.getSelectInterval().toMillis();
     }

     @Override
@@ -80,13 +81,12 @@ class SingleCoreListeningIOReactor extends
AbstractSingleCoreIOReactor implement

     @Override
     protected final void doExecute() throws IOException {
-        final long selectTimeoutMillis =
this.reactorConfig.getSelectIntervalMillis();
         while (!Thread.currentThread().isInterrupted()) {
             if (getStatus().compareTo(IOReactorStatus.ACTIVE) != 0) {
                 break;
             }

-            final int readyCount =
this.selector.select(selectTimeoutMillis);
+            final int readyCount =
this.selector.select(this.selectTimeoutMillis);

             if (getStatus().compareTo(IOReactorStatus.ACTIVE) != 0) {
                 break;

Reply via email to