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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org