Skip to content

Commit 02d5421

Browse files
committed
fix merge
1 parent 7d47782 commit 02d5421

File tree

1 file changed

+52
-2
lines changed

1 file changed

+52
-2
lines changed

httpclient5/src/main/java/org/apache/hc/client5/http/config/ConnectionConfig.java

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public class ConnectionConfig implements Cloneable {
5757

5858
private final Timeout connectTimeout;
5959
private final Timeout socketTimeout;
60+
private final Timeout idleTimeout;
6061
private final TimeValue validateAfterInactivity;
6162
private final TimeValue timeToLive;
6263

@@ -81,12 +82,13 @@ public class ConnectionConfig implements Cloneable {
8182
* Intended for CDI compatibility
8283
*/
8384
protected ConnectionConfig() {
84-
this(DEFAULT_CONNECT_TIMEOUT, null, null, null, false, DEFAULT_HE_ATTEMPT_DELAY, DEFAULT_HE_OTHER_FAMILY_DELAY, ProtocolFamilyPreference.INTERLEAVE);
85+
this(DEFAULT_CONNECT_TIMEOUT, null, null, null, null, false, DEFAULT_HE_ATTEMPT_DELAY, DEFAULT_HE_OTHER_FAMILY_DELAY, ProtocolFamilyPreference.INTERLEAVE);
8586
}
8687

8788
ConnectionConfig(
8889
final Timeout connectTimeout,
8990
final Timeout socketTimeout,
91+
final Timeout idleTimeout,
9092
final TimeValue validateAfterInactivity,
9193
final TimeValue timeToLive,
9294
final boolean staggeredConnectEnabled,
@@ -96,6 +98,7 @@ protected ConnectionConfig() {
9698
super();
9799
this.connectTimeout = connectTimeout;
98100
this.socketTimeout = socketTimeout;
101+
this.idleTimeout = idleTimeout;
99102
this.validateAfterInactivity = validateAfterInactivity;
100103
this.timeToLive = timeToLive;
101104
this.staggeredConnectEnabled = staggeredConnectEnabled;
@@ -118,6 +121,13 @@ public Timeout getConnectTimeout() {
118121
return connectTimeout;
119122
}
120123

124+
/**
125+
* @see Builder#setIdleTimeout(Timeout)
126+
*/
127+
public Timeout getIdleTimeout() {
128+
return idleTimeout;
129+
}
130+
121131
/**
122132
* @see Builder#setValidateAfterInactivity(TimeValue)
123133
*/
@@ -183,6 +193,7 @@ public String toString() {
183193
builder.append("[");
184194
builder.append("connectTimeout=").append(connectTimeout);
185195
builder.append(", socketTimeout=").append(socketTimeout);
196+
builder.append(", idleTimeout=").append(idleTimeout);
186197
builder.append(", validateAfterInactivity=").append(validateAfterInactivity);
187198
builder.append(", timeToLive=").append(timeToLive);
188199
builder.append(", staggeredConnectEnabled=").append(staggeredConnectEnabled);
@@ -213,6 +224,7 @@ public static class Builder {
213224

214225
private Timeout socketTimeout;
215226
private Timeout connectTimeout;
227+
private Timeout idleTimeout;
216228
private TimeValue validateAfterInactivity;
217229
private TimeValue timeToLive;
218230

@@ -237,7 +249,15 @@ public Builder setSocketTimeout(final int soTimeout, final TimeUnit timeUnit) {
237249
}
238250

239251
/**
240-
* Determines the default socket timeout value for I/O operations.
252+
* Determines the default socket timeout value for I/O operations on
253+
* connections created by this configuration.
254+
* A timeout value of zero is interpreted as an infinite timeout.
255+
* <p>
256+
* This value acts as a baseline at the connection management layer.
257+
* This parameter overrides the socket timeout setting applied at the I/O layer
258+
* and in its tuen can overridden by settings applied at the protocol layer
259+
* for the duration of a message exchange.
260+
* </p>
241261
* <p>
242262
* Default: {@code null} (undefined)
243263
* </p>
@@ -274,6 +294,35 @@ public Builder setConnectTimeout(final long connectTimeout, final TimeUnit timeU
274294
return this;
275295
}
276296

297+
/**
298+
* Determines the maximum period of idleness for a connection.
299+
* Connections that are idle for longer than {@code idleTimeout} are no
300+
* longer eligible for reuse.
301+
* <p>
302+
* A timeout value of zero is interpreted as an infinite timeout.
303+
* </p>
304+
* <p>
305+
* Default: {@code null} (undefined)
306+
* </p>
307+
*
308+
* @return this instance.
309+
*
310+
* @since 5.6
311+
*/
312+
public Builder setIdleTimeout(final Timeout idleTimeout) {
313+
this.idleTimeout = idleTimeout;
314+
return this;
315+
}
316+
317+
/**
318+
* @return this instance.
319+
* @see #setIdleTimeout(Timeout)
320+
*/
321+
public Builder setIdleTimeout(final long idleTimeout, final TimeUnit timeUnit) {
322+
this.idleTimeout = Timeout.of(idleTimeout, timeUnit);
323+
return this;
324+
}
325+
277326
/**
278327
* Defines period of inactivity after which persistent connections must
279328
* be re-validated prior to being leased to the consumer. Negative values passed
@@ -369,6 +418,7 @@ public ConnectionConfig build() {
369418
return new ConnectionConfig(
370419
connectTimeout != null ? connectTimeout : DEFAULT_CONNECT_TIMEOUT,
371420
socketTimeout,
421+
idleTimeout,
372422
validateAfterInactivity,
373423
timeToLive,
374424
staggeredConnectEnabled,

0 commit comments

Comments
 (0)