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: [email protected]
For additional commands, e-mail: [email protected]