2003-10-09 Michael Koch <konqueror@gmx.de>

* java/nio/channels/spi/AbstractSelectableChannel.java
	(registered): Made private.
	(blocking): Likewise.
	(LOCK): Likewise.
	(provider): Likewise.
	(keys): Made it a private LinkedList.
	(AbstractSelectableChannel): Initialize keys.
	(isRegistered): New implementation.
	(locate): Rewritten.
	(register): Rewritten.
	* java/nio/channels/spi/AbstractSelectionKey.java
	(ok): Removed.
	(cancelled): New member variable.
	(cancel): Rewritten.
	(isValid): Rewritten.
	* java/nio/channels/spi/AbstractSelector.java:
	Some methods moved.
	(closed): Make private.
	(provider): Likewise.
	(cancelledKeys): New member variable.
	(AbstractSelector): Initialize cancelledKeys.
	(cancelKey): New method.

From-SVN: r72275
This commit is contained in:
Michael Koch
2003-10-09 17:34:10 +00:00
committed by Michael Koch
parent 93d046861d
commit 4e3cb200a5
4 changed files with 81 additions and 49 deletions
@@ -1,5 +1,5 @@
/* AbstractSelectableChannel.java
Copyright (C) 2002 Free Software Foundation, Inc.
Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -48,11 +48,11 @@ import java.util.ListIterator;
public abstract class AbstractSelectableChannel extends SelectableChannel
{
int registered;
boolean blocking = true;
Object LOCK = new Object ();
SelectorProvider provider;
List keys;
private int registered;
private boolean blocking = true;
private Object LOCK = new Object();
private SelectorProvider provider;
private LinkedList keys;
/**
* Initializes the channel
@@ -60,6 +60,7 @@ public abstract class AbstractSelectableChannel extends SelectableChannel
protected AbstractSelectableChannel (SelectorProvider provider)
{
this.provider = provider;
this.keys = new LinkedList();
}
/**
@@ -122,7 +123,7 @@ public abstract class AbstractSelectableChannel extends SelectableChannel
*/
public final boolean isRegistered()
{
return registered > 0;
return !keys.isEmpty();
}
/**
@@ -154,28 +155,21 @@ public abstract class AbstractSelectableChannel extends SelectableChannel
if (keys == null)
return null;
SelectionKey k = null;
ListIterator it = keys.listIterator ();
while (it.hasNext ())
{
k = (SelectionKey) it.next ();
if (k.selector () == selector)
{
return k;
}
SelectionKey key = (SelectionKey) it.next();
if (key.selector() == selector)
return key;
}
return k;
return null;
}
private void add (SelectionKey key)
{
if (keys == null)
{
keys = new LinkedList ();
}
keys.add (key);
}
@@ -190,26 +184,26 @@ public abstract class AbstractSelectableChannel extends SelectableChannel
if (!isOpen ())
throw new ClosedChannelException();
SelectionKey k = null;
SelectionKey key = null;
AbstractSelector selector = (AbstractSelector) selin;
synchronized (LOCK)
{
k = locate (selector);
key = locate (selector);
if (k != null)
if (key != null)
{
k.attach (att);
key.attach (att);
}
else
{
k = selector.register (this, ops, att);
key = selector.register (this, ops, att);
if (k != null)
add (k);
if (key != null)
add (key);
}
}
return k;
return key;
}
}