Author: markt
Date: Thu Jan 8 13:09:47 2015
New Revision: 1650268
URL: http://svn.apache.org/r1650268
Log:
Deque<ByteBufferHolder> is a little more complex than List<ByteBuffer>
but using the same structure for all connectors will improve code re-use
and thereby improve maintainability.
Modified:
tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java
Modified:
tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java?rev=1650268&r1=1650267&r2=1650268&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java
Thu Jan 8 13:09:47 2015
@@ -31,6 +31,7 @@ import java.util.concurrent.TimeoutExcep
import javax.servlet.RequestDispatcher;
import org.apache.coyote.Response;
+import org.apache.tomcat.util.buf.ByteBufferHolder;
import org.apache.tomcat.util.net.AbstractEndpoint;
import org.apache.tomcat.util.net.Nio2Channel;
import org.apache.tomcat.util.net.Nio2Endpoint;
@@ -79,11 +80,6 @@ public class InternalNio2OutputBuffer ex
protected AbstractEndpoint<Nio2Channel> endpoint = null;
/**
- * Used instead of the deque since it looks equivalent and simpler.
- */
- protected ArrayList<ByteBuffer> bufferedWrites = new ArrayList<>();
-
- /**
* Exception that occurred during writing.
*/
protected IOException e = null;
@@ -109,9 +105,9 @@ public class InternalNio2OutputBuffer ex
if (attachment.hasRemaining()) {
arrayList.add(attachment);
}
- for (ByteBuffer buffer : bufferedWrites) {
+ for (ByteBufferHolder buffer : bufferedWrites) {
buffer.flip();
- arrayList.add(buffer);
+ arrayList.add(buffer.getBuf());
}
bufferedWrites.clear();
ByteBuffer[] array =
arrayList.toArray(EMPTY_BUF_ARRAY);
@@ -164,9 +160,9 @@ public class InternalNio2OutputBuffer ex
arrayList.add(buffer);
}
}
- for (ByteBuffer buffer : bufferedWrites) {
+ for (ByteBufferHolder buffer : bufferedWrites) {
buffer.flip();
- arrayList.add(buffer);
+ arrayList.add(buffer.getBuf());
}
bufferedWrites.clear();
ByteBuffer[] array =
arrayList.toArray(EMPTY_BUF_ARRAY);
@@ -303,7 +299,7 @@ public class InternalNio2OutputBuffer ex
private void addToBuffers(byte[] buf, int offset, int length) {
ByteBuffer buffer = ByteBuffer.allocate(length);
buffer.put(buf, offset, length);
- bufferedWrites.add(buffer);
+ bufferedWrites.add(new ByteBufferHolder(buffer, false));
}
@@ -336,8 +332,9 @@ public class InternalNio2OutputBuffer ex
}
try {
if (bufferedWrites.size() > 0) {
- for (ByteBuffer buffer : bufferedWrites) {
- buffer.flip();
+ for (ByteBufferHolder holder : bufferedWrites) {
+ holder.flip();
+ ByteBuffer buffer = holder.getBuf();
while (buffer.hasRemaining()) {
if
(socketWrapper.getSocket().write(buffer).get(socketWrapper.getTimeout(),
TimeUnit.MILLISECONDS).intValue() < 0) {
throw new
EOFException(sm.getString("iob.failedwrite"));
@@ -383,9 +380,9 @@ public class InternalNio2OutputBuffer ex
if (socketWriteBuffer.hasRemaining()) {
arrayList.add(socketWriteBuffer);
}
- for (ByteBuffer buffer : bufferedWrites) {
+ for (ByteBufferHolder buffer : bufferedWrites) {
buffer.flip();
- arrayList.add(buffer);
+ arrayList.add(buffer.getBuf());
}
bufferedWrites.clear();
ByteBuffer[] array =
arrayList.toArray(EMPTY_BUF_ARRAY);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]