java.nio.channels.spi

Class AbstractSelectableChannel

Implemented Interfaces:
Channel, Closeable, InterruptibleChannel
Known Direct Subclasses:
DatagramChannel, Pipe.SinkChannel, Pipe.SourceChannel, ServerSocketChannel, SocketChannel

public abstract class AbstractSelectableChannel
extends SelectableChannel

Constructor Summary

AbstractSelectableChannel(SelectorProvider provider)
Initializes the channel

Method Summary

Object
blockingLock()
Retrieves the object upon which the configureBlocking and register methods synchronize.
SelectableChannel
configureBlocking(boolean blocking)
Adjusts this channel's blocking mode.
protected void
implCloseChannel()
Closes this channel.
protected abstract void
implCloseSelectableChannel()
Closes this selectable channel.
protected abstract void
implConfigureBlocking(boolean blocking)
Adjusts this channel's blocking mode.
boolean
isBlocking()
Tells whether or not every I/O operation on this channel will block until it completes.
boolean
isRegistered()
Tells whether or not this channel is currently registered with any selectors.
SelectionKey
keyFor(Selector selector)
Retrieves the key representing the channel's registration with the given selector.
SelectorProvider
provider()
Returns the provider that created this channel.
SelectionKey
register(Selector selin, 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, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

AbstractSelectableChannel

protected AbstractSelectableChannel(SelectorProvider provider)
Initializes the channel
Parameters:
provider - the provider that created this channel

Method Details

blockingLock

public final Object blockingLock()
Retrieves the object upon which the configureBlocking and register methods synchronize.
Overrides:
blockingLock in interface SelectableChannel
Returns:
the blocking lock

configureBlocking

public final SelectableChannel configureBlocking(boolean blocking)
            throws IOException
Adjusts this channel's blocking mode.
Overrides:
configureBlocking in interface SelectableChannel
Parameters:
blocking - true if blocking should be enabled, false otherwise
Returns:
this channel
Throws:
IOException - If an error occurs

implCloseChannel

protected final void implCloseChannel()
            throws IOException
Closes this channel.
Overrides:
implCloseChannel in interface AbstractInterruptibleChannel
Throws:
IOException - If an error occurs

implCloseSelectableChannel

protected abstract void implCloseSelectableChannel()
            throws IOException
Closes this selectable channel.
Throws:
IOException - If an error occurs

implConfigureBlocking

protected abstract void implConfigureBlocking(boolean blocking)
            throws IOException
Adjusts this channel's blocking mode.
Parameters:
blocking - true if blocking should be enabled, false otherwise
Throws:
IOException - If an error occurs

isBlocking

public final boolean isBlocking()
Tells whether or not every I/O operation on this channel will block until it completes.
Overrides:
isBlocking in interface SelectableChannel
Returns:
true of this channel is blocking, false otherwise

isRegistered

public final boolean isRegistered()
Tells whether or not this channel is currently registered with any selectors.
Overrides:
isRegistered in interface SelectableChannel
Returns:
true if this channel is registered, false otherwise

keyFor

public final SelectionKey keyFor(Selector selector)
Retrieves the key representing the channel's registration with the given selector.
Overrides:
keyFor in interface SelectableChannel
Parameters:
selector - the selector to get a selection key for
Returns:
the selection key this channel is registered with

provider

public final SelectorProvider provider()
Returns the provider that created this channel.
Overrides:
provider in interface SelectableChannel
Returns:
the selector provider that created this channel

register

public final SelectionKey register(Selector selin,
                                   int ops,
                                   Object att)
            throws ClosedChannelException
Registers this channel with the given selector, returning a selection key.
Overrides:
register in interface SelectableChannel
Parameters:
selin - the seletor to use
ops - the interested operations
att - an attachment for the returned selection key
Returns:
the registered selection key
Throws:
ClosedChannelException - If the channel is already closed.
IllegalBlockingModeException - If the channel is configured in blocking mode.

AbstractSelectableChannel.java Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.