| |||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public abstract class AbstractSelectableChannel extends SelectableChannel
Base implementation class for selectable channels.
This class defines methods that handle the mechanics of channel registration, deregistration, and closing. It maintains the current blocking mode of this channel as well as its current set of selection keys. It performs all of the synchronization required to implement the {@link java.nio.channels.SelectableChannel} specification. Implementations of the abstract protected methods defined in this class need not synchronize against other threads that might be engaged in the same operations.
Constructor Summary | |
---|---|
protected |
AbstractSelectableChannel(SelectorProvider provider) Initializes a new instance of this class. |
Method Summary | |
---|---|
Object |
Retrieves the object upon which the java.nio.channels.SelectableChannel.configureBlocking and java.nio.channels.SelectableChannel.register methods synchronize. |
SelectableChannel |
configureBlocking(boolean block) Adjusts this channel's blocking mode. |
protected void |
Closes this channel. |
protected abstract void |
Closes this selectable channel. |
protected abstract void |
implConfigureBlocking(boolean block) Adjusts this channel's blocking mode. |
boolean |
Tells whether or not every I/O operation on this channel will block until it completes. |
boolean |
Tells whether or not this channel is currently registered with any selectors. |
SelectionKey |
Retrieves the key representing the channel's registration with the given selector. |
SelectorProvider |
provider() Returns the provider that created this channel. |
SelectionKey |
Registers this channel with the given selector, returning a selection key. |
Methods inherited from class java.nio.channels.SelectableChannel |
---|
blockingLock, configureBlocking, isBlocking, isRegistered, keyFor, provider, register, register, validOps |
Methods inherited from class java.nio.channels.spi.AbstractInterruptibleChannel |
---|
begin, close, end, implCloseChannel, isOpen |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
protected AbstractSelectableChannel(SelectorProvider provider)
provider
Method Detail |
---|
public final Object blockingLock()
blockingLock
in class SelectableChannel
public final SelectableChannel configureBlocking(boolean block) throws IOException
If the given blocking mode is different from the current blocking mode then this method invokes the {@link #implConfigureBlocking implConfigureBlocking} method, while holding the appropriate locks, in order to change the mode.
configureBlocking
in class SelectableChannel
block
IOException
protected final void implCloseChannel() throws IOException
This method, which is specified in the {@link AbstractInterruptibleChannel} class and is invoked by the {@link java.nio.channels.Channel#close close} method, in turn invokes the {@link #implCloseSelectableChannel implCloseSelectableChannel} method in order to perform the actual work of closing this channel. It then cancels all of this channel's keys.
implCloseChannel
in class AbstractInterruptibleChannel
IOException
protected abstract void implCloseSelectableChannel() throws IOException
This method is invoked by the {@link java.nio.channels.Channel#close close} method in order to perform the actual work of closing the channel. This method is only invoked if the channel has not yet been closed, and it is never invoked more than once.
An implementation of this method must arrange for any other thread that is blocked in an I/O operation upon this channel to return immediately, either by throwing an exception or by returning normally.
IOException
protected abstract void implConfigureBlocking(boolean block) throws IOException
This method is invoked by the {@link #configureBlocking configureBlocking} method in order to perform the actual work of changing the blocking mode. This method is only invoked if the new mode is different from the current mode.
block
IOException
- If an I/O error occurspublic final boolean isBlocking()
isBlocking
in class SelectableChannel
public final boolean isRegistered()
isRegistered
in class SelectableChannel
public final SelectionKey keyFor(Selector sel)
keyFor
in class SelectableChannel
sel
public final SelectorProvider provider()
provider
in class SelectableChannel
public final SelectionKey register(Selector sel, int ops, Object att) throws ClosedChannelException
This method first verifies that this channel is open and that the given initial interest set is valid.
If this channel is already registered with the given selector then the selection key representing that registration is returned after setting its interest set to the given value.
Otherwise this channel has not yet been registered with the given selector, so the {@link AbstractSelector#register register} method of the selector is invoked while holding the appropriate locks. The resulting key is added to this channel's key set before being returned.
register
in class SelectableChannel
sel
ops
att
ClosedChannelException
| |||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |