* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@79640
138bc75d-0d04-0410-961f-
82ee72b054a4
+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
private boolean blocking = true;
private Object LOCK = new Object();
private SelectorProvider provider;
- private LinkedList keys;
+ private LinkedList keys = new LinkedList();
/**
* Initializes the channel
protected AbstractSelectableChannel (SelectorProvider provider)
{
this.provider = provider;
- this.keys = new LinkedList();
}
/**
private SelectionKey locate (Selector selector)
{
- if (keys == null)
- return null;
-
ListIterator it = keys.listIterator ();
while (it.hasNext ())
return null;
}
- private void add (SelectionKey key)
- {
- keys.add (key);
- }
-
/**
* Registers this channel with the given selector, returning a selection key.
*
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);
+ }
}
/* 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.
{
if (isValid())
{
- // FIXME: implement this.
- //selector().cancelledKeys().add (this);
+ ((AbstractSelector) selector()).cancelKey(this);
cancelled = true;
}
}
/* 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.
{
}
+ /**
+ * Returns the provider for this selector object.
+ */
public final SelectorProvider provider ()
{
return provider;
}
+ /**
+ * Returns the cancelled keys set.
+ */
protected final Set cancelledKeys()
{
if (!isOpen())
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);
}
}
protected final void deregister (AbstractSelectionKey key)
{
- // FIXME
+ ((AbstractSelectableChannel) key.channel()).removeSelectionKey(key);
}
}