aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/nio
diff options
context:
space:
mode:
authorMichael Koch <konqueror@gmx.de>2004-03-18 21:32:22 +0000
committerMichael Koch <mkoch@gcc.gnu.org>2004-03-18 21:32:22 +0000
commit138f5109c1658d81d959c6a6a990ede7d56dff5a (patch)
treeb9305fc80248356b39b5865cf00472171b9932ff /libjava/java/nio
parentbdb5db66b17631cb0ec607f8b539ea23c59794ff (diff)
downloadgcc-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/java/nio')
-rw-r--r--libjava/java/nio/channels/spi/AbstractSelectableChannel.java24
-rw-r--r--libjava/java/nio/channels/spi/AbstractSelectionKey.java5
-rw-r--r--libjava/java/nio/channels/spi/AbstractSelector.java16
3 files changed, 28 insertions, 17 deletions
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);
}
}