Reverted back previous check-in related with state update, which seems unnecessary
This commit is contained in:
parent
0acffadd29
commit
4ef936bea1
@ -45,7 +45,7 @@ final class NioAcceptedSocketChannel extends NioSocketChannel {
|
|||||||
|
|
||||||
this.bossThread = bossThread;
|
this.bossThread = bossThread;
|
||||||
|
|
||||||
state = NioSocketChannel.ST_CONNECTED;
|
setConnected();
|
||||||
fireChannelOpen(this);
|
fireChannelOpen(this);
|
||||||
fireChannelBound(this, getLocalAddress());
|
fireChannelBound(this, getLocalAddress());
|
||||||
fireChannelConnected(this, getRemoteAddress());
|
fireChannelConnected(this, getRemoteAddress());
|
||||||
|
@ -124,7 +124,7 @@ class NioClientSocketPipelineSink extends AbstractChannelSink {
|
|||||||
try {
|
try {
|
||||||
channel.socket.socket().bind(localAddress);
|
channel.socket.socket().bind(localAddress);
|
||||||
channel.boundManually = true;
|
channel.boundManually = true;
|
||||||
channel.state = NioSocketChannel.ST_BOUND;
|
channel.setBound();
|
||||||
future.setSuccess();
|
future.setSuccess();
|
||||||
fireChannelBound(channel, channel.getLocalAddress());
|
fireChannelBound(channel, channel.getLocalAddress());
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
|
@ -45,11 +45,11 @@ import org.jboss.netty.util.internal.ThreadLocalBoolean;
|
|||||||
class NioSocketChannel extends AbstractChannel
|
class NioSocketChannel extends AbstractChannel
|
||||||
implements org.jboss.netty.channel.socket.SocketChannel {
|
implements org.jboss.netty.channel.socket.SocketChannel {
|
||||||
|
|
||||||
static final int ST_OPEN = 0;
|
private static final int ST_OPEN = 0;
|
||||||
static final int ST_BOUND = 1;
|
private static final int ST_BOUND = 1;
|
||||||
static final int ST_CONNECTED = 2;
|
private static final int ST_CONNECTED = 2;
|
||||||
static final int ST_CLOSED = -1;
|
private static final int ST_CLOSED = -1;
|
||||||
volatile int state = ST_OPEN;
|
private volatile int state = ST_OPEN;
|
||||||
|
|
||||||
final SocketChannel socket;
|
final SocketChannel socket;
|
||||||
final NioWorker worker;
|
final NioWorker worker;
|
||||||
@ -127,6 +127,16 @@ class NioSocketChannel extends AbstractChannel
|
|||||||
return state == ST_CONNECTED;
|
return state == ST_CONNECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final void setBound() {
|
||||||
|
assert state == ST_OPEN;
|
||||||
|
state = ST_BOUND;
|
||||||
|
}
|
||||||
|
|
||||||
|
final void setConnected() {
|
||||||
|
assert state == ST_OPEN || state == ST_BOUND;
|
||||||
|
state = ST_CONNECTED;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean setClosed() {
|
protected boolean setClosed() {
|
||||||
state = ST_CLOSED;
|
state = ST_CLOSED;
|
||||||
|
@ -23,6 +23,7 @@ import java.nio.channels.AsynchronousCloseException;
|
|||||||
import java.nio.channels.CancelledKeyException;
|
import java.nio.channels.CancelledKeyException;
|
||||||
import java.nio.channels.ClosedChannelException;
|
import java.nio.channels.ClosedChannelException;
|
||||||
import java.nio.channels.NotYetConnectedException;
|
import java.nio.channels.NotYetConnectedException;
|
||||||
|
import java.nio.channels.ScatteringByteChannel;
|
||||||
import java.nio.channels.SelectionKey;
|
import java.nio.channels.SelectionKey;
|
||||||
import java.nio.channels.Selector;
|
import java.nio.channels.Selector;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
@ -302,8 +303,7 @@ class NioWorker implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static boolean read(SelectionKey k) {
|
private static boolean read(SelectionKey k) {
|
||||||
java.nio.channels.SocketChannel ch =
|
ScatteringByteChannel ch = (ScatteringByteChannel) k.channel();
|
||||||
(java.nio.channels.SocketChannel) k.channel();
|
|
||||||
NioSocketChannel channel = (NioSocketChannel) k.attachment();
|
NioSocketChannel channel = (NioSocketChannel) k.attachment();
|
||||||
|
|
||||||
ReceiveBufferSizePredictor predictor =
|
ReceiveBufferSizePredictor predictor =
|
||||||
@ -325,15 +325,10 @@ class NioWorker implements Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
failure = false;
|
failure = false;
|
||||||
|
} catch (AsynchronousCloseException e) {
|
||||||
|
// Can happen, and does not need a user attention.
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
if (!ch.isConnected()) {
|
fireExceptionCaught(channel, t);
|
||||||
channel.state = NioSocketChannel.ST_CLOSED;
|
|
||||||
}
|
|
||||||
if (t instanceof AsynchronousCloseException) {
|
|
||||||
// Can happen, and does not need a user attention.
|
|
||||||
} else {
|
|
||||||
fireExceptionCaught(channel, t);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (readBytes > 0) {
|
if (readBytes > 0) {
|
||||||
@ -473,23 +468,18 @@ class NioWorker implements Runnable {
|
|||||||
addOpWrite = true;
|
addOpWrite = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
} catch (AsynchronousCloseException e) {
|
||||||
|
// Doesn't need a user attention - ignore.
|
||||||
|
channel.currentWriteEvent = evt;
|
||||||
|
channel.currentWriteIndex = bufIdx;
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
if (!channel.socket.isConnected()) {
|
channel.currentWriteEvent = null;
|
||||||
channel.state = NioSocketChannel.ST_CLOSED;
|
evt.getFuture().setFailure(t);
|
||||||
}
|
evt = null;
|
||||||
if (t instanceof AsynchronousCloseException) {
|
fireExceptionCaught(channel, t);
|
||||||
// Doesn't need a user attention - ignore.
|
if (t instanceof IOException) {
|
||||||
channel.currentWriteEvent = evt;
|
open = false;
|
||||||
channel.currentWriteIndex = bufIdx;
|
close(channel, succeededFuture(channel));
|
||||||
} else {
|
|
||||||
channel.currentWriteEvent = null;
|
|
||||||
evt.getFuture().setFailure(t);
|
|
||||||
evt = null;
|
|
||||||
fireExceptionCaught(channel, t);
|
|
||||||
if (t instanceof IOException) {
|
|
||||||
open = false;
|
|
||||||
close(channel, succeededFuture(channel));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -782,7 +772,7 @@ class NioWorker implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!server) {
|
if (!server) {
|
||||||
channel.state = NioSocketChannel.ST_CONNECTED;
|
channel.setConnected();
|
||||||
if (!((NioClientSocketChannel) channel).boundManually) {
|
if (!((NioClientSocketChannel) channel).boundManually) {
|
||||||
fireChannelBound(channel, localAddress);
|
fireChannelBound(channel, localAddress);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user