There was no need to introduce a thread local to avoid event recursion

This commit is contained in:
Trustin Lee 2009-02-26 10:51:03 +00:00
parent 903c530ae0
commit 2321499c8c
2 changed files with 5 additions and 10 deletions

View File

@ -65,6 +65,7 @@ class NioSocketChannel extends AbstractChannel
final Queue<MessageEvent> writeBuffer = new WriteBuffer();
final AtomicInteger writeBufferSize = new AtomicInteger();
final AtomicInteger highWaterMarkCounter = new AtomicInteger();
volatile boolean inWriteNowLoop;
MessageEvent currentWriteEvent;
int currentWriteIndex;

View File

@ -51,7 +51,6 @@ import org.jboss.netty.channel.ReceiveBufferSizePredictor;
import org.jboss.netty.logging.InternalLogger;
import org.jboss.netty.logging.InternalLoggerFactory;
import org.jboss.netty.util.LinkedTransferQueue;
import org.jboss.netty.util.ThreadLocalBoolean;
import org.jboss.netty.util.ThreadRenamingRunnable;
/**
@ -69,8 +68,6 @@ class NioWorker implements Runnable {
private static final int CONSTRAINT_LEVEL = NioProviderMetadata.CONSTRAINT_LEVEL;
private static final ThreadLocalBoolean writing = new ThreadLocalBoolean();
private final int bossId;
private final int id;
private final Executor executor;
@ -330,15 +327,10 @@ class NioWorker implements Runnable {
return;
}
if (writing.get()) {
if (channel.inWriteNowLoop) {
scheduleWriteIfNecessary(channel);
} else {
writing.set(Boolean.TRUE);
try {
writeNow(channel, channel.getConfig().getWriteSpinCount());
} finally {
writing.set(Boolean.FALSE);
}
writeNow(channel, channel.getConfig().getWriteSpinCount());
}
}
@ -375,6 +367,7 @@ class NioWorker implements Runnable {
Queue<MessageEvent> writeBuffer = channel.writeBuffer;
synchronized (channel.writeLock) {
channel.inWriteNowLoop = true;
evt = channel.currentWriteEvent;
for (;;) {
if (evt == null) {
@ -429,6 +422,7 @@ class NioWorker implements Runnable {
}
}
}
channel.inWriteNowLoop = false;
}
fireWriteComplete(channel, writtenBytes);