This documentation differs from the official API. Jadeite adds extra features to the API including: variable font sizes, constructions examples, placeholders for classes and methods, and auto-generated “See Also” links. Additionally it is missing some items found in standard Javadoc documentation, including: generics type information, “Deprecated” tags and comments, “See Also” links, along with other minor differences. Please send any questions or feedback to bam@cs.cmu.edu.


java.nio.channels.spi
class AbstractSelectableChannel

java.lang.Object extended by java.nio.channels.spi.AbstractInterruptibleChannel extended by java.nio.channels.SelectableChannel extended by java.nio.channels.spi.AbstractSelectableChannel
All Implemented Interfaces:
Channel, InterruptibleChannel
Direct Known Subclasses:
DatagramChannel, Pipe.SinkChannel, Pipe.SourceChannel, ServerSocketChannel, SocketChannel

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

          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

          Returns the provider that created this channel.
 SelectionKey
register(Selector sel, int ops, Object att)

          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

AbstractSelectableChannel

protected AbstractSelectableChannel(SelectorProvider provider)
Initializes a new instance of this class.

Parameters:
provider
Method Detail

blockingLock

public final Object blockingLock()
Overrides:
blockingLock in class SelectableChannel

configureBlocking

public final SelectableChannel configureBlocking(boolean block)
                                          throws IOException
Adjusts this channel's blocking mode.

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.

Overrides:
configureBlocking in class SelectableChannel
Parameters:
block
Throws:
IOException

implCloseChannel

protected final void implCloseChannel()
                               throws IOException
Closes this channel.

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.

Overrides:
implCloseChannel in class AbstractInterruptibleChannel
Throws:
IOException

implCloseSelectableChannel

protected abstract void implCloseSelectableChannel()
                                            throws IOException
Closes this selectable channel.

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.

Throws:
IOException

implConfigureBlocking

protected abstract void implConfigureBlocking(boolean block)
                                       throws IOException
Adjusts this channel's blocking mode.

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.

Parameters:
block
Throws:
IOException - If an I/O error occurs

isBlocking

public final boolean isBlocking()
Overrides:
isBlocking in class SelectableChannel

isRegistered

public final boolean isRegistered()
Overrides:
isRegistered in class SelectableChannel

keyFor

public final SelectionKey keyFor(Selector sel)
Overrides:
keyFor in class SelectableChannel
Parameters:
sel

provider

public final SelectorProvider provider()
Returns the provider that created this channel.

Overrides:
provider in class SelectableChannel
Returns:
The provider that created this channel

register

public final SelectionKey register(Selector sel,
                                   int ops,
                                   Object att)
                            throws ClosedChannelException
Registers this channel with the given selector, returning a selection key.

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.

Overrides:
register in class SelectableChannel
Parameters:
sel
ops
att
Throws:
ClosedChannelException


This documentation differs from the official API. Jadeite adds extra features to the API including: variable font sizes, constructions examples, placeholders for classes and methods, and auto-generated “See Also” links. Additionally it is missing some items found in standard Javadoc documentation, including: generics type information, “Deprecated” tags and comments, “See Also” links, along with other minor differences. Please send any questions or feedback to bam@cs.cmu.edu.
This page displays the Jadeite version of the documention, which is derived from the offical documentation that contains this copyright notice:
Copyright 2008 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.
The official Sun™ documentation can be found here at http://java.sun.com/javase/6/docs/api/.