< prev index next > src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpChannelImpl.java
Print this page
private final FileDescriptor fd;
private final int fdVal;
- /* IDs of native threads doing send and receive, for signalling */
- private volatile long receiverThread;
- private volatile long senderThread;
+ /* Threads doing send and receive, for signalling */
+ private volatile Thread receiverThread;
+ private volatile Thread senderThread;
/* Lock held by current receiving or connecting thread */
private final Object receiveLock = new Object();
/* Lock held by current sending or connecting thread */
}
}
private void receiverCleanup() throws IOException {
synchronized (stateLock) {
- receiverThread = 0;
+ receiverThread = null;
if (state == ChannelState.KILLPENDING)
kill();
}
}
private void senderCleanup() throws IOException {
synchronized (stateLock) {
- senderThread = 0;
+ senderThread = null;
if (state == ChannelState.KILLPENDING)
kill();
}
}
begin();
synchronized (stateLock) {
if (!isOpen()) {
return false;
}
- receiverThread = NativeThread.current();
+ receiverThread = NativeThread.threadToSignal();
}
for (;;) {
InetAddress ia = isa.getAddress();
if (ia.isAnyLocalAddress())
ia = InetAddress.getLocalHost();
synchronized (blockingLock()) {
synchronized (stateLock) {
if (!isOpen()) {
return false;
}
- receiverThread = NativeThread.current();
+ receiverThread = NativeThread.threadToSignal();
}
if (!isBlocking()) {
connected = Net.pollConnect(fd, 0);
} else {
do {
} while (!connected && isOpen());
}
}
} finally {
synchronized (stateLock) {
- receiverThread = 0;
+ receiverThread = null;
if (state == ChannelState.KILLPENDING) {
kill();
connected = false;
}
}
public void implCloseSelectableChannel() throws IOException {
synchronized (stateLock) {
if (state != ChannelState.KILLED)
SctpNet.preClose(fdVal);
- if (receiverThread != 0)
+ if (receiverThread != null)
NativeThread.signal(receiverThread);
- if (senderThread != 0)
+ if (senderThread != null)
NativeThread.signal(senderThread);
if (!isRegistered())
kill();
}
}
assert !isOpen() && !isRegistered();
/* Postpone the kill if there is a waiting reader
* or writer thread. */
- if (receiverThread == 0 && senderThread == 0) {
+ if (receiverThread == null && senderThread == null) {
state = ChannelState.KILLED;
SctpNet.close(fdVal);
} else {
state = ChannelState.KILLPENDING;
}
begin();
synchronized (stateLock) {
if(!isOpen())
return null;
- receiverThread = NativeThread.current();
+ receiverThread = NativeThread.threadToSignal();
}
do {
n = receive(fdVal, buffer, resultContainer, fromConnect);
} while ((n == IOStatus.INTERRUPTED) && isOpen());
begin();
synchronized (stateLock) {
if(!isOpen())
return 0;
- senderThread = NativeThread.current();
+ senderThread = NativeThread.threadToSignal();
}
do {
n = send(fdVal, buffer, messageInfo);
} while ((n == IOStatus.INTERRUPTED) && isOpen());
if (isShutdown)
return this;
ensureSendOpen();
SctpNet.shutdown(fdVal, -1);
- if (senderThread != 0)
+ if (senderThread != null)
NativeThread.signal(senderThread);
isShutdown = true;
}
return this;
}
< prev index next >