I like it a lot too, but why are internal value retained as int/long and not use the TimeValue clasS?

Am 2018-10-05 um 16:05 schrieb Gary Gregory:
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;



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to