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