2003-10-09 Michael Koch <konqueror@gmx.de>
authorMichael Koch <konqueror@gmx.de>
Thu, 9 Oct 2003 17:34:10 +0000 (17:34 +0000)
committerMichael Koch <mkoch@gcc.gnu.org>
Thu, 9 Oct 2003 17:34:10 +0000 (17:34 +0000)
* 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

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

index 0c6ec096682fce8d3992dfcf644745f80065dee3..35238540e1482ac3a2ad4ec550ed546ea04c2e20 100644 (file)
@@ -1,3 +1,28 @@
+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.
+
 2003-10-09  Tom Tromey  <tromey@redhat.com>
 
        * java/lang/ClassLoader.java (setSigners): Implemented.
index b13bb4af24fe0f1c0918fd9d04f8776f0ba374be..b027b034ede6db216065550c4a93b500f492b798 100644 (file)
@@ -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;
   }
 }
index 01ea4f33fc21969a99590512fc5e15727e987bdc..0cd5ee104e1e97cbcf4cddd7ee2297809642bcca 100644 (file)
@@ -1,5 +1,5 @@
 /* AbstractSelectionKey.java -- 
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -45,7 +45,7 @@ import java.nio.channels.SelectionKey;
 public abstract class AbstractSelectionKey
   extends SelectionKey
 {
-  boolean ok = true;
+  private boolean cancelled = false;
 
   /**
    * Initializes the key.
@@ -59,10 +59,12 @@ public abstract class AbstractSelectionKey
    */
   public final void cancel ()
   {
-    if (ok)
-      selector ().selectedKeys ().add (this);
-    
-    ok = false;
+    if (isValid())
+      {
+       // FIXME: implement this.
+       //selector().cancelledKeys().add (this);
+        cancelled = true;
+      }
   }
 
   /**
@@ -70,6 +72,6 @@ public abstract class AbstractSelectionKey
    */
   public final boolean isValid ()
   {
-    return ok;
+    return !cancelled;
   }
 }
index 160cdc0036566ed81d4b08c8460156c2902c717e..58ce0c84f601a10a72255a1bf1a979e816a699cd 100644 (file)
@@ -1,5 +1,5 @@
 /* AbstractSelector.java -- 
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -42,11 +42,13 @@ import java.io.IOException;
 import java.nio.channels.SelectionKey;
 import java.nio.channels.Selector;
 import java.util.Set;
+import java.util.HashSet;
 
 public abstract class AbstractSelector extends Selector
 {
-  boolean closed = false;
-  SelectorProvider provider;
+  private boolean closed = false;
+  private SelectorProvider provider;
+  private HashSet cancelledKeys;
 
   /**
    * Initializes the slector.
@@ -54,15 +56,9 @@ public abstract class AbstractSelector extends Selector
   protected AbstractSelector (SelectorProvider provider)
   {
     this.provider = provider;
+    this.cancelledKeys = new HashSet();
   }
  
-  /**
-   * Marks the beginning of an I/O operation that might block indefinitely.
-   */
-  protected final void begin ()
-  {
-  }
-
   /**
    * Closes the channel.
    * 
@@ -73,8 +69,8 @@ public abstract class AbstractSelector extends Selector
     if (closed)
       return;
     
+    implCloseSelector();
     closed = true;
-    implCloseSelector ();
   }
 
   /**
@@ -85,11 +81,16 @@ public abstract class AbstractSelector extends Selector
     return ! closed;
   }
 
-  protected final void deregister (AbstractSelectionKey key)
+  /**
+   * Marks the beginning of an I/O operation that might block indefinitely.
+   */
+  protected final void begin()
   {
-    cancelledKeys ().remove (key);
   }
-    
+
+  /**
+   * Marks the end of an I/O operation that might block indefinitely.
+   */
   protected final void end()
   {
   }
@@ -101,7 +102,12 @@ public abstract class AbstractSelector extends Selector
 
   protected final Set cancelledKeys()
   {
-    return null;
+    return cancelledKeys;
+  }
+
+  final void cancelKey (AbstractSelectionKey key)
+  {
+    cancelledKeys.remove (key);
   }
 
   /**
@@ -111,4 +117,9 @@ public abstract class AbstractSelector extends Selector
 
   protected abstract SelectionKey register (AbstractSelectableChannel ch,
                                             int ops, Object att);   
+
+  protected final void deregister (AbstractSelectionKey key)
+  {
+    // FIXME
+  }
 }