corda/classpath/java/nio/channels/SelectableChannel.java
Joel Dice b908f575d5 fix several blocking SocketChannel bugs
In java-nio.cpp, we can't use GetPrimitiveArrayCritical when reading
from or writing to blocking sockets since it may block the rest of the
VM indefinitely.

In SelectableChannel.java, we can't use a null test on
SelectableChannel.key to determine whether the channel is open since
it might never be registered with a Selector.  According to the Sun
documentation, a SelectableChannel is open as soon as it's created, so
that's what we now implement.
2010-06-04 15:37:22 -06:00

42 lines
1.0 KiB
Java

/* Copyright (c) 2008-2009, Avian Contributors
Permission to use, copy, modify, and/or distribute this software
for any purpose with or without fee is hereby granted, provided
that the above copyright notice and this permission notice appear
in all copies.
There is NO WARRANTY for this software. See license.txt for
details. */
package java.nio.channels;
import java.io.IOException;
import java.nio.ByteBuffer;
public abstract class SelectableChannel implements Channel {
private SelectionKey key;
private boolean open = true;
abstract int socketFD();
public abstract SelectableChannel configureBlocking(boolean v)
throws IOException;
public SelectionKey register(Selector selector, int interestOps,
Object attachment)
{
key = new SelectionKey(this, selector, interestOps, attachment);
selector.add(key);
return key;
}
public boolean isOpen() {
return open;
}
public void close() throws IOException {
open = false;
key = null;
}
}