You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2017/09/05 09:43:50 UTC
svn commit: r1807326 - in /tomcat/trunk/java/org/apache/coyote/http2:
Http2AsyncUpgradeHandler.java Http2Protocol.java Http2UpgradeHandler.java
Author: markt
Date: Tue Sep 5 09:43:49 2017
New Revision: 1807326
URL: http://svn.apache.org/viewvc?rev=1807326&view=rev
Log:
Refactor: Obtain timeouts directly from protocol
Modified:
tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java
tomcat/trunk/java/org/apache/coyote/http2/Http2Protocol.java
tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java?rev=1807326&r1=1807325&r2=1807326&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java Tue Sep 5 09:43:49 2017
@@ -71,8 +71,8 @@ public class Http2AsyncUpgradeHandler ex
@Override
protected void writeSettings() {
// Send the initial settings frame
- socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
- null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
+ socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+ TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
ByteBuffer.wrap(localSettings.getSettingsFrameForPending()));
if (error != null) {
String msg = sm.getString("upgradeHandler.sendPrefaceFail", connectionId);
@@ -101,8 +101,8 @@ public class Http2AsyncUpgradeHandler ex
ByteUtil.set31Bits(rstFrame, 5, se.getStreamId());
// Payload
ByteUtil.setFourBytes(rstFrame, 9, se.getError().getCode());
- socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
- null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
+ socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+ TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
ByteBuffer.wrap(rstFrame));
handleAsyncException();
}
@@ -121,13 +121,15 @@ public class Http2AsyncUpgradeHandler ex
byte[] payloadLength = new byte[3];
ByteUtil.setThreeBytes(payloadLength, 0, len);
if (debugMsg != null) {
- socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
- null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
- ByteBuffer.wrap(payloadLength), ByteBuffer.wrap(GOAWAY), ByteBuffer.wrap(fixedPayload), ByteBuffer.wrap(debugMsg));
+ socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+ TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
+ ByteBuffer.wrap(payloadLength), ByteBuffer.wrap(GOAWAY),
+ ByteBuffer.wrap(fixedPayload), ByteBuffer.wrap(debugMsg));
} else {
- socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
- null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
- ByteBuffer.wrap(payloadLength), ByteBuffer.wrap(GOAWAY), ByteBuffer.wrap(fixedPayload));
+ socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+ TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
+ ByteBuffer.wrap(payloadLength), ByteBuffer.wrap(GOAWAY),
+ ByteBuffer.wrap(fixedPayload));
}
handleAsyncException();
}
@@ -171,9 +173,9 @@ public class Http2AsyncUpgradeHandler ex
ByteUtil.set31Bits(header, 5, stream.getIdentifier().intValue());
int orgLimit = data.limit();
data.limit(data.position() + len);
- socketWrapper.write(BlockingMode.BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
- null, SocketWrapperBase.COMPLETE_WRITE, applicationErrorCompletion,
- ByteBuffer.wrap(header), data);
+ socketWrapper.write(BlockingMode.BLOCK, protocol.getWriteTimeout(),
+ TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE,
+ applicationErrorCompletion, ByteBuffer.wrap(header), data);
data.limit(orgLimit);
handleAsyncException();
}
@@ -197,8 +199,8 @@ public class Http2AsyncUpgradeHandler ex
frame2[3] = FrameType.WINDOW_UPDATE.getIdByte();
ByteUtil.set31Bits(frame2, 9, increment);
ByteUtil.set31Bits(frame2, 5, stream.getIdentifier().intValue());
- socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
- null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
+ socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+ TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
ByteBuffer.wrap(frame), ByteBuffer.wrap(frame2));
handleAsyncException();
}
@@ -212,8 +214,8 @@ public class Http2AsyncUpgradeHandler ex
log.warn(sm.getString("upgradeHandler.unexpectedAck", connectionId, getIdentifier()));
}
} else {
- socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
- null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
+ socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+ TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
ByteBuffer.wrap(SETTINGS_ACK));
}
handleAsyncException();
@@ -243,9 +245,9 @@ public class Http2AsyncUpgradeHandler ex
PingRecord pingRecord = new PingRecord(sentSequence, now);
inflightPings.add(pingRecord);
ByteUtil.set31Bits(payload, 4, sentSequence);
- socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
- null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
- ByteBuffer.wrap(PING), ByteBuffer.wrap(payload));
+ socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+ TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE,
+ errorCompletion, ByteBuffer.wrap(PING), ByteBuffer.wrap(payload));
handleAsyncException();
}
}
@@ -256,9 +258,9 @@ public class Http2AsyncUpgradeHandler ex
super.receivePing(payload, ack);
} else {
// Client originated ping. Echo it back.
- socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
- null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
- ByteBuffer.wrap(PING_ACK), ByteBuffer.wrap(payload));
+ socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+ TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE,
+ errorCompletion, ByteBuffer.wrap(PING_ACK), ByteBuffer.wrap(payload));
handleAsyncException();
}
}
@@ -293,9 +295,9 @@ public class Http2AsyncUpgradeHandler ex
@Override
public void endHeaders() throws IOException {
- socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
- null, SocketWrapperBase.COMPLETE_WRITE, applicationErrorCompletion,
- bufs.toArray(BYTEBUFFER_ARRAY));
+ socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+ TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE,
+ applicationErrorCompletion, bufs.toArray(BYTEBUFFER_ARRAY));
handleAsyncException();
}
Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2Protocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2Protocol.java?rev=1807326&r1=1807325&r2=1807326&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2Protocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2Protocol.java Tue Sep 5 09:43:49 2017
@@ -105,9 +105,6 @@ public class Http2Protocol implements Up
? new Http2AsyncUpgradeHandler(this, adapter, coyoteRequest)
: new Http2UpgradeHandler(this, adapter, coyoteRequest);
- result.setReadTimeout(getReadTimeout());
- result.setKeepAliveTimeout(getKeepAliveTimeout());
- result.setWriteTimeout(getWriteTimeout());
result.setMaxConcurrentStreams(getMaxConcurrentStreams());
result.setMaxConcurrentStreamExecution(getMaxConcurrentStreamExecution());
result.setInitialWindowSize(getInitialWindowSize());
Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java?rev=1807326&r1=1807325&r2=1807326&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java Tue Sep 5 09:43:49 2017
@@ -96,7 +96,7 @@ class Http2UpgradeHandler extends Abstra
protected final String connectionId;
- private final Http2Protocol protocol;
+ protected final Http2Protocol protocol;
private final Adapter adapter;
protected volatile SocketWrapperBase<?> socketWrapper;
private volatile SSLSupport sslSupport;
@@ -122,11 +122,6 @@ class Http2UpgradeHandler extends Abstra
private HpackDecoder hpackDecoder;
private HpackEncoder hpackEncoder;
- // All timeouts in milliseconds
- private long readTimeout = Http2Protocol.DEFAULT_READ_TIMEOUT;
- private long keepAliveTimeout = Http2Protocol.DEFAULT_KEEP_ALIVE_TIMEOUT;
- private long writeTimeout = Http2Protocol.DEFAULT_WRITE_TIMEOUT;
-
private final Map<Integer,Stream> streams = new HashMap<>();
protected final AtomicInteger activeRemoteStreamCount = new AtomicInteger(0);
// Start at -1 so the 'add 2' logic in closeIdleStreams() works
@@ -201,8 +196,8 @@ class Http2UpgradeHandler extends Abstra
Stream stream = null;
- socketWrapper.setReadTimeout(getReadTimeout());
- socketWrapper.setWriteTimeout(getWriteTimeout());
+ socketWrapper.setReadTimeout(protocol.getReadTimeout());
+ socketWrapper.setWriteTimeout(protocol.getWriteTimeout());
if (webConnection != null) {
// HTTP/2 started via HTTP upgrade.
@@ -316,7 +311,7 @@ class Http2UpgradeHandler extends Abstra
try {
// There is data to read so use the read timeout while
// reading frames.
- socketWrapper.setReadTimeout(getReadTimeout());
+ socketWrapper.setReadTimeout(protocol.getReadTimeout());
while (true) {
try {
if (!parser.readFrame(false)) {
@@ -335,7 +330,7 @@ class Http2UpgradeHandler extends Abstra
}
// No more frames to read so switch to the keep-alive
// timeout.
- socketWrapper.setReadTimeout(getKeepAliveTimeout());
+ socketWrapper.setReadTimeout(protocol.getKeepAliveTimeout());
} catch (Http2Exception ce) {
// Really ConnectionException
if (log.isDebugEnabled()) {
@@ -1130,36 +1125,6 @@ class Http2UpgradeHandler extends Abstra
// ------------------------------------------- Configuration getters/setters
- public long getReadTimeout() {
- return readTimeout;
- }
-
-
- public void setReadTimeout(long readTimeout) {
- this.readTimeout = readTimeout;
- }
-
-
- public long getKeepAliveTimeout() {
- return keepAliveTimeout;
- }
-
-
- public void setKeepAliveTimeout(long keepAliveTimeout) {
- this.keepAliveTimeout = keepAliveTimeout;
- }
-
-
- public long getWriteTimeout() {
- return writeTimeout;
- }
-
-
- public void setWriteTimeout(long writeTimeout) {
- this.writeTimeout = writeTimeout;
- }
-
-
public void setMaxConcurrentStreams(long maxConcurrentStreams) {
localSettings.set(Setting.MAX_CONCURRENT_STREAMS, maxConcurrentStreams);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org