OSDN Git Service

2004-03-18 Michael Koch <konqueror@gmx.de>
authormkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 18 Mar 2004 21:32:22 +0000 (21:32 +0000)
committermkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 18 Mar 2004 21:32:22 +0000 (21:32 +0000)
* 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

libjava/ChangeLog
libjava/java/nio/channels/spi/AbstractSelectableChannel.java
libjava/java/nio/channels/spi/AbstractSelectionKey.java
libjava/java/nio/channels/spi/AbstractSelector.java

index 7f69dba..a6d1dad 100644 (file)
@@ -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
index 0a872bc..a07485d 100644 (file)
@@ -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);
+  }
 }
index 0cd5ee1..78e0a82 100644 (file)
@@ -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;
       }
   }
index ca77187..b657b5e 100644 (file)
@@ -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);
   }
 }