You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2018/05/03 14:43:36 UTC
svn commit: r1830827 - in /tomcat/trunk/java/org/apache:
coyote/http2/Http2AsyncUpgradeHandler.java
tomcat/util/net/SocketWrapperBase.java
tomcat/websocket/server/WsRemoteEndpointImplServer.java
Author: remm
Date: Thu May 3 14:43:36 2018
New Revision: 1830827
URL: http://svn.apache.org/viewvc?rev=1830827&view=rev
Log:
Refactoring to move common helper class to SocketWrapperBase. Also saves one object creation.
Modified:
tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java
tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.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=1830827&r1=1830826&r2=1830827&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java Thu May 3 14:43:36 2018
@@ -33,9 +33,6 @@ import org.apache.tomcat.util.http.MimeH
import org.apache.tomcat.util.net.SendfileState;
import org.apache.tomcat.util.net.SocketWrapperBase;
import org.apache.tomcat.util.net.SocketWrapperBase.BlockingMode;
-import org.apache.tomcat.util.net.SocketWrapperBase.CompletionCheck;
-import org.apache.tomcat.util.net.SocketWrapperBase.CompletionHandlerCall;
-import org.apache.tomcat.util.net.SocketWrapperBase.CompletionState;
public class Http2AsyncUpgradeHandler extends Http2UpgradeHandler {
@@ -307,7 +304,7 @@ public class Http2AsyncUpgradeHandler ex
ByteUtil.set31Bits(header, 5, sendfile.stream.getIdentifier().intValue());
sendfile.mappedBuffer.limit(sendfile.mappedBuffer.position() + frameSize);
socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
- TimeUnit.MILLISECONDS, sendfile, COMPLETE_WRITE_WITH_COMPLETION,
+ TimeUnit.MILLISECONDS, sendfile, SocketWrapperBase.COMPLETE_WRITE_WITH_COMPLETION,
new SendfileCompletionHandler(), ByteBuffer.wrap(header), sendfile.mappedBuffer);
try {
handleAsyncException();
@@ -321,19 +318,6 @@ public class Http2AsyncUpgradeHandler ex
}
}
- private static final CompletionCheck COMPLETE_WRITE_WITH_COMPLETION = new CompletionCheck() {
- @Override
- public CompletionHandlerCall callHandler(CompletionState state, ByteBuffer[] buffers,
- int offset, int length) {
- for (int i = 0; i < length; i++) {
- if (buffers[offset + i].remaining() > 0) {
- return CompletionHandlerCall.CONTINUE;
- }
- }
- return CompletionHandlerCall.DONE;
- }
- };
-
protected class SendfileCompletionHandler implements CompletionHandler<Long, SendfileData> {
@Override
public void completed(Long nBytes, SendfileData sendfile) {
@@ -381,7 +365,7 @@ public class Http2AsyncUpgradeHandler ex
ByteUtil.set31Bits(header, 5, sendfile.stream.getIdentifier().intValue());
sendfile.mappedBuffer.limit(sendfile.mappedBuffer.position() + frameSize);
socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
- TimeUnit.MILLISECONDS, sendfile, COMPLETE_WRITE_WITH_COMPLETION,
+ TimeUnit.MILLISECONDS, sendfile, SocketWrapperBase.COMPLETE_WRITE_WITH_COMPLETION,
this, ByteBuffer.wrap(header), sendfile.mappedBuffer);
try {
handleAsyncException();
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java?rev=1830827&r1=1830826&r2=1830827&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Thu May 3 14:43:36 2018
@@ -868,6 +868,23 @@ public abstract class SocketWrapperBase<
};
/**
+ * This utility CompletionCheck will cause the write to fully write
+ * all remaining data. The completion handler will then be called.
+ */
+ public static final CompletionCheck COMPLETE_WRITE_WITH_COMPLETION = new CompletionCheck() {
+ @Override
+ public CompletionHandlerCall callHandler(CompletionState state, ByteBuffer[] buffers,
+ int offset, int length) {
+ for (int i = 0; i < length; i++) {
+ if (buffers[offset + i].remaining() > 0) {
+ return CompletionHandlerCall.CONTINUE;
+ }
+ }
+ return CompletionHandlerCall.DONE;
+ }
+ };
+
+ /**
* This utility CompletionCheck will cause the completion handler
* to be called once some data has been read. If the operation
* completes inline, the completion handler will not be called.
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java?rev=1830827&r1=1830826&r2=1830827&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java Thu May 3 14:43:36 2018
@@ -32,9 +32,6 @@ import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.net.SocketWrapperBase;
import org.apache.tomcat.util.net.SocketWrapperBase.BlockingMode;
-import org.apache.tomcat.util.net.SocketWrapperBase.CompletionCheck;
-import org.apache.tomcat.util.net.SocketWrapperBase.CompletionHandlerCall;
-import org.apache.tomcat.util.net.SocketWrapperBase.CompletionState;
import org.apache.tomcat.util.res.StringManager;
import org.apache.tomcat.websocket.Transformation;
import org.apache.tomcat.websocket.WsRemoteEndpointImplBase;
@@ -92,19 +89,7 @@ public class WsRemoteEndpointImplServer
timeout = getSendTimeout();
}
socketWrapper.write(block ? BlockingMode.BLOCK : BlockingMode.SEMI_BLOCK, timeout,
- TimeUnit.MILLISECONDS, null,
- new CompletionCheck() {
- @Override
- public CompletionHandlerCall callHandler(CompletionState state, ByteBuffer[] buffers,
- int offset, int length) {
- for (int i = 0; i < length; i++) {
- if (buffers[offset + i].remaining() > 0) {
- return CompletionHandlerCall.CONTINUE;
- }
- }
- return CompletionHandlerCall.DONE;
- }
- },
+ TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE_WITH_COMPLETION,
new CompletionHandler<Long, Void>() {
@Override
public void completed(Long result, Void attachment) {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org