AlreadyConnectedException.java: Removed unneeded import.

2002-11-13  Michael Koch <konqueror@gmx.de>

	* java/nio/channels/AlreadyConnectedException.java:
	Removed unneeded import.
	(AlreadyConnectedException): Documentation added.
	* java/nio/channels/Pipe.java
	(SinkChannel.SinkChannel): Documentation added.
	(SinkChannel.validOps): New method.
	(SourceChannel.SourceChannel): Documentation added.
	(SourceChannel.validOps): New method.
	(Pipe): Documentation added.
	(open): Documentation added.
	(SinkChannel.channel): Documentation added.
	(SourceChannel.channel): Documentation added.
	* java/nio/channel/SelectableChannel.java
	(SelectableChannel): Documentation added.
	(blockingLock): Documentation added.
	(configureBlocking):Documentation added.
	(isBlocking):Documentation added.
	(isRegistered):Documentation added.
	(keyFor):Documentation added.
	(provider):Documentation added.
	(register): Documentation added.
	(validOps): Documentation added.
	* jaba/nio/channels/SelectionKey.java
	(SelectionKey): Documentation added.
	(attach): Documentation added.
	(attachment): Documentation added.
	(isAcceptable): Documentation added.
	(isConnetable): Documentation added.
	(isReadable): Documentation added.
	(isWritable): Documentation added.
	(cancel): Documentation added.
	(channel): Documentation added.
	(interestOps): Documentation added.
	(isValid): Documentation added.
	(readyOps): Documentation added.
	(selector): Documentation added.
	* jaba/nio/channels/Selector.java
	(Selector): Documentation added.
	(open): Documentation added.
	(close): Documentation added.
	(isOpen): Documentation added.
	(keys): Documentation added.
	(provider): Documentation added.
	(select): Documentation added.
	(selectedKeys): Documentation added.
	(selectNow): Documentation added.
	(wakeup): Documentation added.
	* java/nio/channels/spi/AbstractInterruptibleChannel.java
	(AbstractInterruptibleChannel): Documentation added.
	(opened): Default to true;
	(begin): Documentation added.
	(close): Set opened to false, documentation added.
	(isOpen): Documentation added.
	* java/nio/channels/spi/AbstractSelectionKey.java
	(AbstractSelectionKey): Documentation added.
	(cancel): Documentation added.
	(isValid): Documentation added.
	* java/nio/channels/spi/AbstractSelector.java
	(AbstractSelector): Documentation added.
	(begin): Documentation added.
	(close): Documentation added.
	(isOpen): Documentation added.
	(deregister): Documentation added.
	(end): Documentation added.
	(provider): Documentation added.
	(implCloseSelector): Documentation added.
	(register): Documentation added.
	* java/nio/channels/spi/SelectorProvider.java
	(SelectorProvider): Documentation added.
	(openDatagramChannel): Documentation added.
	(openPipe): Documentation added.
	(openSelector): Documentation added.
	(openServerSocketChannel): Documentation added.
	(openSocketChannel): Documentation added.
	(provider): Documentation added.

From-SVN: r59077
This commit is contained in:
Michael Koch 2002-11-13 13:52:47 +00:00 committed by Michael Koch
parent e6179f4596
commit 70c73a4d1d
10 changed files with 457 additions and 146 deletions

View File

@ -1,3 +1,81 @@
2002-11-13 Michael Koch <konqueror@gmx.de>
* java/nio/channels/AlreadyConnectedException.java:
Removed unneeded import.
(AlreadyConnectedException): Documentation added.
* java/nio/channels/Pipe.java
(SinkChannel.SinkChannel): Documentation added.
(SinkChannel.validOps): New method.
(SourceChannel.SourceChannel): Documentation added.
(SourceChannel.validOps): New method.
(Pipe): Documentation added.
(open): Documentation added.
(SinkChannel.channel): Documentation added.
(SourceChannel.channel): Documentation added.
* java/nio/channel/SelectableChannel.java
(SelectableChannel): Documentation added.
(blockingLock): Documentation added.
(configureBlocking):Documentation added.
(isBlocking):Documentation added.
(isRegistered):Documentation added.
(keyFor):Documentation added.
(provider):Documentation added.
(register): Documentation added.
(validOps): Documentation added.
* jaba/nio/channels/SelectionKey.java
(SelectionKey): Documentation added.
(attach): Documentation added.
(attachment): Documentation added.
(isAcceptable): Documentation added.
(isConnetable): Documentation added.
(isReadable): Documentation added.
(isWritable): Documentation added.
(cancel): Documentation added.
(channel): Documentation added.
(interestOps): Documentation added.
(isValid): Documentation added.
(readyOps): Documentation added.
(selector): Documentation added.
* jaba/nio/channels/Selector.java
(Selector): Documentation added.
(open): Documentation added.
(close): Documentation added.
(isOpen): Documentation added.
(keys): Documentation added.
(provider): Documentation added.
(select): Documentation added.
(selectedKeys): Documentation added.
(selectNow): Documentation added.
(wakeup): Documentation added.
* java/nio/channels/spi/AbstractInterruptibleChannel.java
(AbstractInterruptibleChannel): Documentation added.
(opened): Default to true;
(begin): Documentation added.
(close): Set opened to false, documentation added.
(isOpen): Documentation added.
* java/nio/channels/spi/AbstractSelectionKey.java
(AbstractSelectionKey): Documentation added.
(cancel): Documentation added.
(isValid): Documentation added.
* java/nio/channels/spi/AbstractSelector.java
(AbstractSelector): Documentation added.
(begin): Documentation added.
(close): Documentation added.
(isOpen): Documentation added.
(deregister): Documentation added.
(end): Documentation added.
(provider): Documentation added.
(implCloseSelector): Documentation added.
(register): Documentation added.
* java/nio/channels/spi/SelectorProvider.java
(SelectorProvider): Documentation added.
(openDatagramChannel): Documentation added.
(openPipe): Documentation added.
(openSelector): Documentation added.
(openServerSocketChannel): Documentation added.
(openSocketChannel): Documentation added.
(provider): Documentation added.
2002-11-12 Michael Koch <konqueror@gmx.de>
* java/nio/Buffer.java: Implemented.

View File

@ -37,11 +37,11 @@ exception statement from your version. */
package java.nio.channels;
import java.io.*;
public class AlreadyConnectedException extends IllegalStateException
{
/**
* Creates the exception
*/
public AlreadyConnectedException()
{
}

View File

@ -40,40 +40,82 @@ package java.nio.channels;
import java.nio.channels.spi.AbstractSelectableChannel;
import java.nio.channels.spi.SelectorProvider;
/**
* @author Michael Koch
* @since 1.4
*/
public abstract class Pipe
{
public abstract static class SinkChannel
extends AbstractSelectableChannel
implements WritableByteChannel, GatheringByteChannel
{
protected SinkChannel(SelectorProvider provider)
/**
* Initializes the channel.
*/
protected SinkChannel (SelectorProvider provider)
{
super (provider);
}
/**
* Returns an operation set that is valid on this channel.
*
* The only valid operation on this channel is @see SelectionKey.OP_WRITE.
*/
public final int validOps ()
{
return SelectionKey.OP_WRITE;
}
}
public abstract static class SourceChannel
extends AbstractSelectableChannel
implements ReadableByteChannel, ScatteringByteChannel
{
protected SourceChannel(SelectorProvider provider)
/**
* Initializes the channel.
*/
protected SourceChannel (SelectorProvider provider)
{
super (provider);
}
/**
* Returns an operation set that is valid on this channel.
*
* The only valid operation on this channel is @see SelectionKey.OP_READ.
*/
public final int validOps ()
{
return SelectionKey.OP_READ;
}
}
/**
* Initializes the pipe.
*/
protected Pipe()
{
}
/**
* Opens a pipe.
*
* @exception IOException If an error occurs
*/
public static Pipe open()
{
return null;
return SelectorProvider.provider ().openPipe();
}
/**
* Returns a pipe's sink channel.
*/
public abstract Pipe.SinkChannel sink();
/**
* Returns a pipe's source channel
*/
public abstract Pipe.SourceChannel source();
}

View File

@ -40,50 +40,99 @@ package java.nio.channels;
import java.nio.channels.spi.AbstractInterruptibleChannel;
import java.nio.channels.spi.SelectorProvider;
/**
* @author Michael Koch
* @since 1.4
*/
public abstract class SelectableChannel
extends AbstractInterruptibleChannel
{
protected SelectableChannel()
/**
* Initializes the channel.
*/
protected SelectableChannel ()
{
}
public abstract Object blockingLock();
/**
* Returns the lock of this channel.
*/
public abstract Object blockingLock ();
/**
* @exception ClosedChannelException FIXME
* @exception IllegalBlockingModeException FIXME
* @exception IOException FIXME
* Adjusts this channel's blocking mode.
*
* @exception ClosedChannelException If this channel is closed.
* @exception IllegalBlockingModeException If block is true and this channel
* is registered with one or more selectors.
* @exception IOException If an error occurs.
*/
public abstract SelectableChannel configureBlocking(boolean block);
public abstract boolean isBlocking();
public abstract boolean isRegistered();
public abstract SelectionKey keyFor(Selector sel);
public abstract SelectorProvider provider();
public abstract SelectableChannel configureBlocking (boolean block);
/**
* @exception CancelledKeyException FIXME
* @exception ClosedChannelException FIXME
* @exception IllegalArgumentException FIXME
* @exception IllegalBlockingModeException FIXME
* @exception IllegalSelectorException FIXME
* Tells whether this channel is blocking or not.
*/
public final SelectionKey register(Selector sel, int ops) throws java.nio.channels.ClosedChannelException
public abstract boolean isBlocking ();
/**
* Tells whether or not this channel is currently registered with
* any selectors.
*/
public abstract boolean isRegistered ();
/**
* Retrieves the key representing the channel's registration with
* the given selector.
*/
public abstract SelectionKey keyFor (Selector sel);
/**
* Returns the provider that created this channel.
*/
public abstract SelectorProvider provider ();
/**
* Registers this channel with the given selector,
* returning a selection key.
*
* @exception CancelledKeyException If this channel is currently registered
* with the given selector but the corresponding key has already been cancelled
* @exception ClosedChannelException If this channel is closed.
* @exception IllegalArgumentException If a bit in ops does not correspond
* to an operation that is supported by this channel, that is, if
* set &amp; ~validOps() != 0.
* @exception IllegalBlockingModeException If block is true and this channel
* is registered with one or more selectors.
* @exception IllegalSelectorException If this channel was not created by
* the same provider as the given selector.
*/
public final SelectionKey register (Selector sel, int ops)
throws ClosedChannelException
{
return register(sel, ops, null);
return register (sel, ops, null);
}
/**
* @exception CancelledKeyException FIXME
* @exception ClosedChannelException FIXME
* @exception IllegalArgumentException FIXME
* @exception IllegalBlockingModeException FIXME
* @exception IllegalSelectorException FIXME
* Registers this channel with the given selector,
* returning a selection key.
*
* @exception CancelledKeyException If this channel is currently registered
* with the given selector but the corresponding key has already been
* cancelled.
* @exception ClosedChannelException If this channel is closed.
* @exception IllegalArgumentException If a bit in ops does not correspond
* to an operation that is supported by this channel, that is, if
* set &amp; ~validOps() != 0.
* @exception IllegalBlockingModeException If block is true and this channel
* is registered with one or more selectors.
* @exception IllegalSelectorException If this channel was not created by
* the same provider as the given selector.
*/
public abstract SelectionKey register(Selector sel, int ops, Object att) throws java.nio.channels.ClosedChannelException;
public abstract SelectionKey register (Selector sel, int ops, Object att)
throws ClosedChannelException;
public abstract int validOps();
/**
* Returns a set of valid operations on this channel.
*/
public abstract int validOps();
}

View File

@ -37,6 +37,10 @@ exception statement from your version. */
package java.nio.channels;
/**
* @author Michael Koch
* @since 1.4
*/
public abstract class SelectionKey
{
public static final int OP_ACCEPT = 1<<0;
@ -45,76 +49,116 @@ public abstract class SelectionKey
public static final int OP_WRITE = 1<<3;
Object attached;
protected SelectionKey()
/**
* Initializes the selection key.
*/
protected SelectionKey ()
{
}
public final Object attach(Object obj)
/**
* Attaches obj to the key and returns the old attached object.
*/
public final Object attach (Object obj)
{
Object old = attached;
attached = obj;
return old;
}
public final Object attachment()
/**
* Returns the object attached to the key.
*/
public final Object attachment ()
{
return attached;
}
/**
* @exception CancelledKeyException FIXME
* Tests if the channel attached to this key is ready to accept
* a new socket connection.
*
* @exception CancelledKeyException If this key has been cancelled
*/
public final boolean isAcceptable()
public final boolean isAcceptable ()
{
return (readyOps() & OP_ACCEPT) != 0;
return (readyOps () & OP_ACCEPT) != 0;
}
/**
* @exception CancelledKeyException FIXME
* Tests whether this key's channel has either finished,
* or failed to finish, its socket-connection operation.
*
* @exception CancelledKeyException If this key has been cancelled
*/
public final boolean isConnectable()
public final boolean isConnectable ()
{
return (readyOps() & OP_CONNECT) != 0;
return (readyOps () & OP_CONNECT) != 0;
}
/**
* @exception CancelledKeyException FIXME
* Tests if the channel attached to the key is readable.
*
* @exception CancelledKeyException If this key has been cancelled
*/
public final boolean isReadable()
public final boolean isReadable ()
{
return (readyOps() & OP_READ) != 0;
return (readyOps () & OP_READ) != 0;
}
/**
* @exception CancelledKeyException FIXME
* Tests if the channel attached to the key is writable.
*
* @exception CancelledKeyException If this key has been cancelled
*/
public final boolean isWritable()
public final boolean isWritable ()
{
return (readyOps() & OP_WRITE) != 0;
return (readyOps () & OP_WRITE) != 0;
}
public abstract void cancel();
public abstract SelectableChannel channel();
/**
* @exception CancelledKeyException FIXME
* Requests that the registration of this key's channel with
* its selector be cancelled.
*/
public abstract int interestOps();
/**
* @exception CancelledKeyException FIXME
* @exception IllegalArgumentException FIXME
*/
public abstract SelectionKey interestOps(int ops);
public abstract boolean isValid();
public abstract void cancel ();
/**
* @exception CancelledKeyException FIXME
* return the channel attached to the key.
*/
public abstract int readyOps();
public abstract SelectableChannel channel ();
public abstract Selector selector();
/**
* Returns the key's interest set.
*
* @exception CancelledKeyException If this key has been cancelled
*/
public abstract int interestOps ();
/**
* Sets this key's interest set to the given value.
*
* @exception CancelledKeyException If this key has been cancelled
* @exception IllegalArgumentException If a bit in the set does not
* correspond to an operation that is supported by this key's channel,
* that is, if set &amp; ~(channel().validOps()) != 0
*/
public abstract SelectionKey interestOps (int ops);
/**
* Tells whether or not this key is valid.
*/
public abstract boolean isValid ();
/**
* Retrieves this key's ready-operation set.
*
* @exception CancelledKeyException If this key has been cancelled
*/
public abstract int readyOps ();
/**
* Returns the selector for which this key was created.
*/
public abstract Selector selector ();
}

View File

@ -37,60 +37,97 @@ exception statement from your version. */
package java.nio.channels;
import java.util.Set;
import java.io.IOException;
import java.nio.channels.spi.SelectorProvider;
import java.util.Set;
/**
* @author Michael Koch
* @since 1.4
*/
public abstract class Selector
{
/**
* Initializes the selector.
*/
protected Selector()
{
}
/**
* Opens a selector.
*
* @exception IOException If an error occurs
*/
public static Selector open()
public static Selector open ()
{
return SelectorProvider.provider().openSelector();
return SelectorProvider.provider ().openSelector ();
}
/**
* Closes the selector.
*
* @exception IOException If an error occurs
*/
public abstract void close();
public abstract boolean isOpen();
public abstract void close () throws IOException;
/**
* @exception ClosedSelectorException FIXME
* Tells whether the selector is open or not.
*/
public abstract Set keys();
public abstract SelectorProvider provider();
public abstract boolean isOpen ();
/**
* @exception ClosedSelectorException FIXME
* Returns this selector's key set.
*
* @exception ClosedSelectorException If this selector is closed.
*/
public abstract Set keys ();
/**
* Returns the SelectorProvider that created the selector.
*/
public abstract SelectorProvider provider ();
/**
* Selects a set of keys whose corresponding channels are ready
* for I/O operations.
*
* @exception ClosedSelectorException If this selector is closed.
* @exception IOException If an error occurs
*/
public abstract int select();
public abstract int select () throws IOException;
/**
* @exception ClosedSelectorException FIXME
* @exception IllegalArgumentException FIXME
* Selects a set of keys whose corresponding channels are ready
* for I/O operations.
*
* @param timeout The timeout to use.
*
* @exception ClosedSelectorException If this selector is closed.
* @exception IllegalArgumentException If the timeout value is negative.
* @exception IOException If an error occurs
*/
public abstract int select(long timeout);
public abstract int select (long timeout) throws IOException;
/**
* @exception ClosedSelectorException FIXME
* Returns this selector's selected-key set.
*
* @exception ClosedSelectorException If this selector is closed.
*/
public abstract Set selectedKeys();
public abstract Set selectedKeys ();
/**
* @exception ClosedSelectorException FIXME
* Selects a set of keys whose corresponding channels are ready
* for I/O operations.
*
* @exception ClosedSelectorException If this selector is closed.
* @exception IOException If an error occurs
*/
public abstract int selectNow();
public abstract int selectNow () throws IOException;
public abstract Selector wakeup();
/**
* Causes the first selection operation that has not yet returned to
* return immediately.
*/
public abstract Selector wakeup ();
}

View File

@ -41,47 +41,64 @@ import java.io.IOException;
import java.nio.channels.Channel;
import java.nio.channels.InterruptibleChannel;
/**
* @author Michael Koch
* @since 1.4
*/
public abstract class AbstractInterruptibleChannel
implements Channel, InterruptibleChannel
{
boolean opened = false;
boolean opened = true;
protected AbstractInterruptibleChannel()
/**
* Initializes the channel.
*/
protected AbstractInterruptibleChannel ()
{
}
protected final void begin()
/**
* Marks the beginning of an I/O operation that might block indefinitely.
*/
protected final void begin ()
{
// Marks the beginning of an I/O operation that might block indefinitely.
}
/**
* Closes the channel.
*
* @exception IOException If an error occurs
*/
public final void close() throws IOException
public final void close () throws IOException
{
// Closes this channel.
implCloseChannel();
opened = false;
implCloseChannel ();
}
/**
* @exception AsynchronousCloseException FIXME
* @exception ClosedByInterruptException FIXME
* Marks the end of an I/O operation that might block indefinitely.
*
* @exception AsynchronousCloseException If the channel was asynchronously
* closed.
* @exception ClosedByInterruptException If the thread blocked in the
* I/O operation was interrupted.
*/
protected final void end(boolean completed)
protected final void end (boolean completed)
{
// Marks the end of an I/O operation that might block indefinitely.
}
/**
* Closes the channel.
*
* @exception IOException If an error occurs
*/
protected abstract void implCloseChannel() throws IOException;
protected abstract void implCloseChannel () throws IOException;
public final boolean isOpen()
/**
* Tells whether or not this channel is open.
*/
public final boolean isOpen ()
{
// Tells whether or not this channel is open.
return opened;
}
}

View File

@ -39,28 +39,37 @@ package java.nio.channels.spi;
import java.nio.channels.SelectionKey;
/**
* @since 1.4
*/
public abstract class AbstractSelectionKey
extends SelectionKey
{
boolean ok = true;
/**
* Initializes the key.
*/
protected AbstractSelectionKey ()
{
}
/**
* Cancels this key.
*/
public final void cancel ()
{
if (ok)
{
selector ().selectedKeys ().add (this);
}
selector ().selectedKeys ().add (this);
ok = false;
}
/**
* Tells whether this key is valid or not.
*/
public final boolean isValid ()
{
return ok;
}
}

View File

@ -37,6 +37,7 @@ exception statement from your version. */
package java.nio.channels.spi;
import java.io.IOException;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.util.List;
@ -44,57 +45,70 @@ import java.util.Set;
public abstract class AbstractSelector extends Selector
{
boolean closed = true;
boolean closed = false;
SelectorProvider provider;
protected AbstractSelector(SelectorProvider provider)
/**
* Initializes the slector.
*/
protected AbstractSelector (SelectorProvider provider)
{
this.provider = provider;
}
protected final void begin()
/**
* Marks the beginning of an I/O operation that might block indefinitely.
*/
protected final void begin ()
{
}
/**
* Closes the channel.
*
* @exception IOException If an error occurs
*/
public final void close()
public final void close () throws IOException
{
if (closed)
return;
closed = true;
implCloseSelector();
implCloseSelector ();
}
protected final void deregister(AbstractSelectionKey key)
/**
* Tells whether this channel is open or not.
*/
public final boolean isOpen ()
{
cancelledKeys().remove(key);
return ! closed;
}
protected final void deregister (AbstractSelectionKey key)
{
cancelledKeys ().remove (key);
}
protected final void end()
{
}
public final boolean isOpen()
{
return ! closed;
}
public final SelectorProvider provider()
public final SelectorProvider provider ()
{
return provider;
}
protected final Set cancelledKeys()
{
return null;
}
/**
* @exception IOException If an error occurs
* Closes the channel.
*/
protected abstract void implCloseSelector();
protected abstract SelectionKey register(AbstractSelectableChannel ch, int ops, Object att);
protected abstract void implCloseSelector () throws IOException;
protected abstract SelectionKey register (AbstractSelectableChannel ch,
int ops, Object att);
}

View File

@ -1,4 +1,4 @@
/* SelectorProvider.java --
/* SelectorProvider.java
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@ -37,12 +37,14 @@ exception statement from your version. */
package java.nio.channels.spi;
/* import gnu.java.nio.channels.SelectorProviderImpl; */
import java.nio.channels.DatagramChannel;
import java.nio.channels.Pipe;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
/**
* @author Michael Koch
* @since 1.4
*/
public abstract class SelectorProvider
@ -50,33 +52,52 @@ public abstract class SelectorProvider
static SelectorProvider pr;
/**
* Creates the <code>SelectorProvider<code> object
* Initializes the selector provider.
*
* @exception SecurityException If a security manager has been installed and
* it denies RuntimePermission("selectorProvider")
* it denies @see RuntimePermission ("selectorProvider").
*/
protected SelectorProvider()
protected SelectorProvider ()
{
SecurityManager sm = System.getSecurityManager ();
if (sm != null)
sm.checkPermission (new RuntimePermission ("selectorProvider"));
}
public abstract DatagramChannel openDatagramChannel();
public abstract Pipe openPipe();
public abstract AbstractSelector openSelector();
public abstract ServerSocketChannel openServerSocketChannel();
public abstract SocketChannel openSocketChannel();
/**
* Returns the global <code>SelectorProvider</code> object
* Opens a datagram channel.
*/
public static SelectorProvider provider()
public abstract DatagramChannel openDatagramChannel ();
/**
* Opens a pipe.
*/
public abstract Pipe openPipe ();
/**
* Opens a selector.
*/
public abstract AbstractSelector openSelector ();
/**
* Opens a server socket channel.
*/
public abstract ServerSocketChannel openServerSocketChannel ();
/**
* Opens a socket channel.
*/
public abstract SocketChannel openSocketChannel ();
/**
* Returns the system-wide default selector provider for this invocation
* of the Java virtual machine.
*/
public static SelectorProvider provider ()
{
/* if (pr == null) */
/* pr = new SelectorProviderImpl (); */
return pr;
}
}