diff --git a/libjava/ChangeLog b/libjava/ChangeLog index c90c47efe23c6689f60d5916ceaa49884801ecbb..85df30e65c6781e130ecc3e8227a112ed7c511aa 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,23 @@ +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. + 2004-01-07 Michael Koch <konqueror@gmx.de> * java/net/ServerSocket.java (isBound): Fixed documentation. diff --git a/libjava/gnu/java/nio/DatagramChannelImpl.java b/libjava/gnu/java/nio/DatagramChannelImpl.java index af43256cc28a1672a2ca1775a2b90182f9583cff..3531803900aa999c5540c59f7ea002ec5b90e482 100644 --- a/libjava/gnu/java/nio/DatagramChannelImpl.java +++ b/libjava/gnu/java/nio/DatagramChannelImpl.java @@ -56,13 +56,13 @@ import java.nio.channels.spi.SelectorProvider; 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 @@ public final class DatagramChannelImpl extends DatagramChannel throws IOException { socket.setSoTimeout (blocking ? 0 : NIOConstants.DEFAULT_TIMEOUT); - this.blocking = blocking; } public DatagramChannel connect (SocketAddress remote) diff --git a/libjava/gnu/java/nio/ServerSocketChannelImpl.java b/libjava/gnu/java/nio/ServerSocketChannelImpl.java index 97943c0ff8e044e227ff50e8265ab42b67e9b706..fd975d20a7ad540bfa07b41989395cf134cc83f8 100644 --- a/libjava/gnu/java/nio/ServerSocketChannelImpl.java +++ b/libjava/gnu/java/nio/ServerSocketChannelImpl.java @@ -55,7 +55,6 @@ import java.nio.channels.spi.SelectorProvider; public final class ServerSocketChannelImpl extends ServerSocketChannel { private NIOServerSocket serverSocket; - private boolean blocking = true; private boolean connected; protected ServerSocketChannelImpl (SelectorProvider provider) @@ -63,6 +62,7 @@ public final class ServerSocketChannelImpl extends ServerSocketChannel { super (provider); serverSocket = new NIOServerSocket (this); + configureBlocking(true); } public int getNativeFD() @@ -93,7 +93,6 @@ public final class ServerSocketChannelImpl extends ServerSocketChannel protected void implConfigureBlocking (boolean blocking) throws IOException { serverSocket.setSoTimeout (blocking ? 0 : NIOConstants.DEFAULT_TIMEOUT); - this.blocking = blocking; } public SocketChannel accept () throws IOException diff --git a/libjava/gnu/java/nio/SocketChannelImpl.java b/libjava/gnu/java/nio/SocketChannelImpl.java index ced8ef2476a10aacf3e997bf6438b199d3610f76..efb5fec481b7dd88b79b2338e4763501373f594d 100644 --- a/libjava/gnu/java/nio/SocketChannelImpl.java +++ b/libjava/gnu/java/nio/SocketChannelImpl.java @@ -65,7 +65,6 @@ public final class SocketChannelImpl extends SocketChannel { private PlainSocketImpl impl; private NIOSocket socket; - private boolean blocking = true; private boolean connectionPending; SocketChannelImpl (SelectorProvider provider) @@ -74,6 +73,7 @@ public final class SocketChannelImpl extends SocketChannel super (provider); impl = new PlainSocketImpl(); socket = new NIOSocket (impl, this); + configureBlocking(true); } SocketChannelImpl (SelectorProvider provider, @@ -117,7 +117,6 @@ public final class SocketChannelImpl extends SocketChannel 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 @@ public final class SocketChannelImpl extends SocketChannel if (((InetSocketAddress) remote).isUnresolved()) throw new UnresolvedAddressException(); - if (blocking) + if (isBlocking()) { // Do blocking connect. socket.connect (remote); diff --git a/libjava/java/nio/channels/spi/AbstractSelectableChannel.java b/libjava/java/nio/channels/spi/AbstractSelectableChannel.java index b027b034ede6db216065550c4a93b500f492b798..17d6a2eaea1f90361d2d8130111434b8a4468e45 100644 --- a/libjava/java/nio/channels/spi/AbstractSelectableChannel.java +++ b/libjava/java/nio/channels/spi/AbstractSelectableChannel.java @@ -75,13 +75,13 @@ public abstract class AbstractSelectableChannel extends SelectableChannel /** * 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 @@ public abstract class AbstractSelectableChannel extends SelectableChannel SelectionKey key = null; AbstractSelector selector = (AbstractSelector) selin; - synchronized (LOCK) + synchronized (blockingLock()) { key = locate (selector);