This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
FYI: Patch: java.nio - channel stuff
- From: Michael Koch <konqueror at gmx dot de>
- To: java-patches at gcc dot gnu dot org
- Date: Wed, 7 Jan 2004 17:56:06 +0100
- Subject: 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);