This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

FYI: Patch: java.nio - channel stuff


Hi list,


I commited the attached patch to fix some NIO issues.


Michael


2004-01-07  Michael Koch  <konqueror@gmx.de>

	* gnu/java/nio/DatagramChannelImpl.java
	(blocking): Removed.
	(DatagramChannelImpl): Call configureBlocking().
	(implConfigureBlocking): Dont initialize blocking.
	* gnu/java/nio/ServerSocketChannelImpl.java
	(blocking): Removed.
	(ServerSocketChannelImpl): Call configureBlocking().
	(implConfigureBlocking): Dont initialize blocking.
	* gnu/java/nio/SocketChannelImpl.java
	(blocking): Removed.
	(SocketChannelImpl): Call configureBlocking().
	(implConfigureBlocking): Dont initialize blocking.
	(connect): Use isBlocking().
	* java/nio/channels/spi/AbstractSelectableChannel.java
	(configureBlocking): Use blockingLock() instead of LOCK.
	Set blocking after successfully called implConfigureBlocking().
	(register): Use blockingLock() instead of LOCK.

Index: gnu/java/nio/DatagramChannelImpl.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/nio/DatagramChannelImpl.java,v
retrieving revision 1.7
diff -u -b -B -r1.7 DatagramChannelImpl.java
--- gnu/java/nio/DatagramChannelImpl.java	2 Dec 2003 15:03:21 -0000	1.7
+++ gnu/java/nio/DatagramChannelImpl.java	7 Jan 2004 16:50:34 -0000
@@ -56,13 +56,13 @@
 public final class DatagramChannelImpl extends DatagramChannel
 {
   private NIODatagramSocket socket;
-  private boolean blocking = true;
   
   protected DatagramChannelImpl (SelectorProvider provider)
     throws IOException
   {
     super (provider);
     socket = new NIODatagramSocket (new PlainDatagramSocketImpl(), this);
+    configureBlocking(true);
   }
 
   public int getNativeFD()
@@ -85,7 +85,6 @@
     throws IOException
   {
     socket.setSoTimeout (blocking ? 0 : NIOConstants.DEFAULT_TIMEOUT);
-    this.blocking = blocking;
   }
 
   public DatagramChannel connect (SocketAddress remote)
Index: gnu/java/nio/ServerSocketChannelImpl.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/nio/ServerSocketChannelImpl.java,v
retrieving revision 1.10
diff -u -b -B -r1.10 ServerSocketChannelImpl.java
--- gnu/java/nio/ServerSocketChannelImpl.java	2 Dec 2003 15:03:21 -0000	1.10
+++ gnu/java/nio/ServerSocketChannelImpl.java	7 Jan 2004 16:50:34 -0000
@@ -55,7 +55,6 @@
 public final class ServerSocketChannelImpl extends ServerSocketChannel
 {
   private NIOServerSocket serverSocket;
-  private boolean blocking = true;
   private boolean connected;
 
   protected ServerSocketChannelImpl (SelectorProvider provider)
@@ -63,6 +62,7 @@
   {
     super (provider);
     serverSocket = new NIOServerSocket (this);
+    configureBlocking(true);
   }
 
   public int getNativeFD()
@@ -93,7 +93,6 @@
   protected void implConfigureBlocking (boolean blocking) throws IOException
   {
     serverSocket.setSoTimeout (blocking ? 0 : NIOConstants.DEFAULT_TIMEOUT);
-    this.blocking = blocking;
   }
 
   public SocketChannel accept () throws IOException
Index: gnu/java/nio/SocketChannelImpl.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/nio/SocketChannelImpl.java,v
retrieving revision 1.14
diff -u -b -B -r1.14 SocketChannelImpl.java
--- gnu/java/nio/SocketChannelImpl.java	11 Dec 2003 15:35:13 -0000	1.14
+++ gnu/java/nio/SocketChannelImpl.java	7 Jan 2004 16:50:34 -0000
@@ -65,7 +65,6 @@
 {
   private PlainSocketImpl impl;
   private NIOSocket socket;
-  private boolean blocking = true;
   private boolean connectionPending;
 
   SocketChannelImpl (SelectorProvider provider)
@@ -74,6 +73,7 @@
     super (provider);
     impl = new PlainSocketImpl();
     socket = new NIOSocket (impl, this);
+    configureBlocking(true);
   }
   
   SocketChannelImpl (SelectorProvider provider,
@@ -117,7 +117,6 @@
   protected void implConfigureBlocking (boolean blocking) throws IOException
   {
     socket.setSoTimeout (blocking ? 0 : NIOConstants.DEFAULT_TIMEOUT);
-    this.blocking = blocking;
   }   
 
   public boolean connect (SocketAddress remote) throws IOException
@@ -137,7 +136,7 @@
     if (((InetSocketAddress) remote).isUnresolved())
       throw new UnresolvedAddressException();
     
-    if (blocking)
+    if (isBlocking())
       {
         // Do blocking connect.
         socket.connect (remote);
Index: java/nio/channels/spi/AbstractSelectableChannel.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/nio/channels/spi/AbstractSelectableChannel.java,v
retrieving revision 1.6
diff -u -b -B -r1.6 AbstractSelectableChannel.java
--- java/nio/channels/spi/AbstractSelectableChannel.java	9 Oct 2003 17:34:10 -0000	1.6
+++ java/nio/channels/spi/AbstractSelectableChannel.java	7 Jan 2004 16:50:34 -0000
@@ -75,13 +75,13 @@
   /**
    * Adjusts this channel's blocking mode.
    */
-  public final SelectableChannel configureBlocking (boolean block)
+  public final SelectableChannel configureBlocking (boolean blocking)
     throws IOException
   {
-    synchronized (LOCK)
+    synchronized (blockingLock())
       {
-        blocking = true;
-        implConfigureBlocking (block);
+        implConfigureBlocking(blocking);
+        this.blocking = blocking;
       }
     
     return this;
@@ -187,7 +187,7 @@
     SelectionKey key = null;
     AbstractSelector selector = (AbstractSelector) selin;
 
-    synchronized (LOCK)
+    synchronized (blockingLock())
       {
         key = locate (selector);
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]