Optimize AbstractNioWorker.cleanUpWriteBuffer(..). See #293

This commit is contained in:
Norman Maurer 2012-04-29 20:10:51 +02:00
parent ca19df80f5
commit ea38734b13

View File

@ -671,7 +671,11 @@ abstract class AbstractNioWorker implements Worker {
} }
Queue<MessageEvent> writeBuffer = channel.writeBufferQueue; Queue<MessageEvent> writeBuffer = channel.writeBufferQueue;
if (!writeBuffer.isEmpty()) { for (;;) {
evt = writeBuffer.poll();
if (evt == null) {
break;
}
// Create the exception only once to avoid the excessive overhead // Create the exception only once to avoid the excessive overhead
// caused by fillStackTrace. // caused by fillStackTrace.
if (cause == null) { if (cause == null) {
@ -680,16 +684,10 @@ abstract class AbstractNioWorker implements Worker {
} else { } else {
cause = new ClosedChannelException(); cause = new ClosedChannelException();
} }
}
for (;;) {
evt = writeBuffer.poll();
if (evt == null) {
break;
}
evt.getFuture().setFailure(cause); evt.getFuture().setFailure(cause);
fireExceptionCaught = true; fireExceptionCaught = true;
} }
} }
} }