You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by vi...@apache.org on 2016/08/29 16:55:54 UTC
svn commit: r1758261 - in /tomcat/trunk/java/org/apache:
catalina/connector/OutputBuffer.java coyote/Response.java
Author: violetagg
Date: Mon Aug 29 16:55:54 2016
New Revision: 1758261
URL: http://svn.apache.org/viewvc?rev=1758261&view=rev
Log:
Implement o.a.catalina.connector.OutputBuffer.realWriteBytes(ByteBuffer)
Modified:
tomcat/trunk/java/org/apache/catalina/connector/OutputBuffer.java
tomcat/trunk/java/org/apache/coyote/Response.java
Modified: tomcat/trunk/java/org/apache/catalina/connector/OutputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/OutputBuffer.java?rev=1758261&r1=1758260&r2=1758261&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/OutputBuffer.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/OutputBuffer.java Mon Aug 29 16:55:54 2016
@@ -395,7 +395,27 @@ public class OutputBuffer extends Writer
*/
@Override
public void realWriteBytes(ByteBuffer buf) throws IOException {
- // To be implemented
+
+ if (closed) {
+ return;
+ }
+ if (coyoteResponse == null) {
+ return;
+ }
+
+ // If we really have something to write
+ if (buf.remaining() > 0) {
+ // real write to the adapter
+ try {
+ coyoteResponse.doWrite(buf.slice());
+ } catch (IOException e) {
+ // An IOException on a write is almost always due to
+ // the remote client aborting the request. Wrap this
+ // so that it can be handled better by the error dispatcher.
+ throw new ClientAbortException(e);
+ }
+ }
+
}
Modified: tomcat/trunk/java/org/apache/coyote/Response.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/Response.java?rev=1758261&r1=1758260&r2=1758261&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/Response.java (original)
+++ tomcat/trunk/java/org/apache/coyote/Response.java Mon Aug 29 16:55:54 2016
@@ -18,6 +18,7 @@ package org.apache.coyote;
import java.io.IOException;
import java.io.StringReader;
+import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.util.Locale;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -500,6 +501,20 @@ public final class Response {
contentWritten+=chunk.getLength();
}
+
+ /**
+ * Write a chunk of bytes.
+ *
+ * @param chunk The ByteBuffer to write
+ *
+ * @throws IOException If an I/O error occurs during the write
+ */
+ public void doWrite(ByteBuffer chunk) throws IOException {
+ int len = chunk.remaining();
+ outputBuffer.doWrite(chunk);
+ contentWritten += len - chunk.remaining();
+ }
+
// --------------------
public void recycle() {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org