diff options
author | Michael Koch <konqueror@gmx.de> | 2004-03-18 21:32:22 +0000 |
---|---|---|
committer | Michael Koch <mkoch@gcc.gnu.org> | 2004-03-18 21:32:22 +0000 |
commit | 138f5109c1658d81d959c6a6a990ede7d56dff5a (patch) | |
tree | b9305fc80248356b39b5865cf00472171b9932ff /libjava | |
parent | bdb5db66b17631cb0ec607f8b539ea23c59794ff (diff) | |
download | gcc-138f5109c1658d81d959c6a6a990ede7d56dff5a.zip gcc-138f5109c1658d81d959c6a6a990ede7d56dff5a.tar.gz gcc-138f5109c1658d81d959c6a6a990ede7d56dff5a.tar.bz2 |
2004-03-18 Michael Koch <konqueror@gmx.de>
* java/nio/channels/spi/AbstractSelectableChannel.java
(keys): Initialize at declaration.
(locate): keys cant be null.
(add): Removed.
(addSelectionKey): New method.
(removeSelectionKey): New method.
* java/nio/channels/spi/AbstractSelectionKey.java
(cancel): Call AbstractSelector.cancelKey(SelectionKey key).
* java/nio/channels/spi/AbstractSelector.java
(provider): Javadoc added.
(cancelledKeys): Javadoc added.
(cancelKey): Javadoc added, add key to cancelledKeys.
(deregister): Implemented.
From-SVN: r79640
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 16 | ||||
-rw-r--r-- | libjava/java/nio/channels/spi/AbstractSelectableChannel.java | 24 | ||||
-rw-r--r-- | libjava/java/nio/channels/spi/AbstractSelectionKey.java | 5 | ||||
-rw-r--r-- | libjava/java/nio/channels/spi/AbstractSelector.java | 16 |
4 files changed, 44 insertions, 17 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 7f69dba..a6d1dad 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,19 @@ +2004-03-18 Michael Koch <konqueror@gmx.de> + + * java/nio/channels/spi/AbstractSelectableChannel.java + (keys): Initialize at declaration. + (locate): keys cant be null. + (add): Removed. + (addSelectionKey): New method. + (removeSelectionKey): New method. + * java/nio/channels/spi/AbstractSelectionKey.java + (cancel): Call AbstractSelector.cancelKey(SelectionKey key). + * java/nio/channels/spi/AbstractSelector.java + (provider): Javadoc added. + (cancelledKeys): Javadoc added. + (cancelKey): Javadoc added, add key to cancelledKeys. + (deregister): Implemented. + 2004-03-18 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> * gnu/java/nio/channels/natFileChannelPosix.cc (mapImpl): Cast diff --git a/libjava/java/nio/channels/spi/AbstractSelectableChannel.java b/libjava/java/nio/channels/spi/AbstractSelectableChannel.java index 0a872bc..a07485d 100644 --- a/libjava/java/nio/channels/spi/AbstractSelectableChannel.java +++ b/libjava/java/nio/channels/spi/AbstractSelectableChannel.java @@ -51,7 +51,7 @@ public abstract class AbstractSelectableChannel extends SelectableChannel private boolean blocking = true; private Object LOCK = new Object(); private SelectorProvider provider; - private LinkedList keys; + private LinkedList keys = new LinkedList(); /** * Initializes the channel @@ -59,7 +59,6 @@ public abstract class AbstractSelectableChannel extends SelectableChannel protected AbstractSelectableChannel (SelectorProvider provider) { this.provider = provider; - this.keys = new LinkedList(); } /** @@ -160,9 +159,6 @@ public abstract class AbstractSelectableChannel extends SelectableChannel private SelectionKey locate (Selector selector) { - if (keys == null) - return null; - ListIterator it = keys.listIterator (); while (it.hasNext ()) @@ -176,11 +172,6 @@ public abstract class AbstractSelectableChannel extends SelectableChannel return null; } - private void add (SelectionKey key) - { - keys.add (key); - } - /** * Registers this channel with the given selector, returning a selection key. * @@ -209,10 +200,21 @@ public abstract class AbstractSelectableChannel extends SelectableChannel key = selector.register (this, ops, att); if (key != null) - add (key); + addSelectionKey (key); } } return key; } + + void addSelectionKey(SelectionKey key) + { + keys.add(key); + } + + // This method gets called by AbstractSelector.deregister(). + void removeSelectionKey(SelectionKey key) + { + keys.remove(key); + } } diff --git a/libjava/java/nio/channels/spi/AbstractSelectionKey.java b/libjava/java/nio/channels/spi/AbstractSelectionKey.java index 0cd5ee1..78e0a82 100644 --- a/libjava/java/nio/channels/spi/AbstractSelectionKey.java +++ b/libjava/java/nio/channels/spi/AbstractSelectionKey.java @@ -1,5 +1,5 @@ /* AbstractSelectionKey.java -- - Copyright (C) 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -61,8 +61,7 @@ public abstract class AbstractSelectionKey { if (isValid()) { - // FIXME: implement this. - //selector().cancelledKeys().add (this); + ((AbstractSelector) selector()).cancelKey(this); cancelled = true; } } diff --git a/libjava/java/nio/channels/spi/AbstractSelector.java b/libjava/java/nio/channels/spi/AbstractSelector.java index ca77187..b657b5e 100644 --- a/libjava/java/nio/channels/spi/AbstractSelector.java +++ b/libjava/java/nio/channels/spi/AbstractSelector.java @@ -1,5 +1,5 @@ /* AbstractSelector.java -- - Copyright (C) 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -96,11 +96,17 @@ public abstract class AbstractSelector extends Selector { } + /** + * Returns the provider for this selector object. + */ public final SelectorProvider provider () { return provider; } + /** + * Returns the cancelled keys set. + */ protected final Set cancelledKeys() { if (!isOpen()) @@ -109,11 +115,15 @@ public abstract class AbstractSelector extends Selector return cancelledKeys; } + /** + * Cancels a selection key. + */ + // This method is only called by AbstractSelectionKey.cancel(). final void cancelKey (AbstractSelectionKey key) { synchronized (cancelledKeys) { - cancelledKeys.remove(key); + cancelledKeys.add(key); } } @@ -127,6 +137,6 @@ public abstract class AbstractSelector extends Selector protected final void deregister (AbstractSelectionKey key) { - // FIXME + ((AbstractSelectableChannel) key.channel()).removeSelectionKey(key); } } |