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;