2004-11-21 Michael Koch <konqueror@gmx.de>
* gnu/java/nio/SocketChannelImpl.java (read): Only return 0 when no bytes for reading available in non-blocking mode. * java/nio/channels/SocketChannel.java: Added some missing @return tags. From-SVN: r90986
This commit is contained in:
parent
7fe16580f0
commit
926253eeca
@ -1,3 +1,11 @@
|
|||||||
|
2004-11-21 Michael Koch <konqueror@gmx.de>
|
||||||
|
|
||||||
|
* gnu/java/nio/SocketChannelImpl.java
|
||||||
|
(read): Only return 0 when no bytes for reading available in
|
||||||
|
non-blocking mode.
|
||||||
|
* java/nio/channels/SocketChannel.java:
|
||||||
|
Added some missing @return tags.
|
||||||
|
|
||||||
2004-11-21 Michael Koch <konqueror@gmx.de>
|
2004-11-21 Michael Koch <konqueror@gmx.de>
|
||||||
|
|
||||||
* java/beans/PropertyChangeSupport.java
|
* java/beans/PropertyChangeSupport.java
|
||||||
|
@ -182,7 +182,7 @@ public final class SocketChannelImpl extends SocketChannel
|
|||||||
// FIXME: Handle blocking/non-blocking mode.
|
// FIXME: Handle blocking/non-blocking mode.
|
||||||
|
|
||||||
Selector selector = provider().openSelector();
|
Selector selector = provider().openSelector();
|
||||||
register (selector, SelectionKey.OP_CONNECT);
|
register(selector, SelectionKey.OP_CONNECT);
|
||||||
|
|
||||||
if (isBlocking())
|
if (isBlocking())
|
||||||
{
|
{
|
||||||
@ -216,7 +216,7 @@ public final class SocketChannelImpl extends SocketChannel
|
|||||||
return socket;
|
return socket;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int read (ByteBuffer dst) throws IOException
|
public int read(ByteBuffer dst) throws IOException
|
||||||
{
|
{
|
||||||
if (!isConnected())
|
if (!isConnected())
|
||||||
throw new NotYetConnectedException();
|
throw new NotYetConnectedException();
|
||||||
@ -227,7 +227,7 @@ public final class SocketChannelImpl extends SocketChannel
|
|||||||
int available = input.available();
|
int available = input.available();
|
||||||
int len = dst.capacity() - dst.position();
|
int len = dst.capacity() - dst.position();
|
||||||
|
|
||||||
if (available == 0)
|
if (! isBlocking() && available == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (len > available)
|
if (len > available)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* SocketChannel.java --
|
/* SocketChannel.java --
|
||||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
Copyright (C) 2002, 2004 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GNU Classpath.
|
This file is part of GNU Classpath.
|
||||||
|
|
||||||
@ -35,6 +35,7 @@ this exception to your version of the library, but you are not
|
|||||||
obligated to do so. If you do not wish to do so, delete this
|
obligated to do so. If you do not wish to do so, delete this
|
||||||
exception statement from your version. */
|
exception statement from your version. */
|
||||||
|
|
||||||
|
|
||||||
package java.nio.channels;
|
package java.nio.channels;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -44,16 +45,15 @@ import java.nio.ByteBuffer;
|
|||||||
import java.nio.channels.spi.AbstractSelectableChannel;
|
import java.nio.channels.spi.AbstractSelectableChannel;
|
||||||
import java.nio.channels.spi.SelectorProvider;
|
import java.nio.channels.spi.SelectorProvider;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Michael Koch
|
* @author Michael Koch (konqueror@gmx.de)
|
||||||
* @since 1.4
|
* @since 1.4
|
||||||
*/
|
*/
|
||||||
public abstract class SocketChannel extends AbstractSelectableChannel
|
public abstract class SocketChannel extends AbstractSelectableChannel
|
||||||
implements ByteChannel, ScatteringByteChannel, GatheringByteChannel
|
implements ByteChannel, ScatteringByteChannel, GatheringByteChannel
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Initializes this socket.
|
* Initializes this socket channel.
|
||||||
*/
|
*/
|
||||||
protected SocketChannel(SelectorProvider provider)
|
protected SocketChannel(SelectorProvider provider)
|
||||||
{
|
{
|
||||||
@ -63,6 +63,8 @@ public abstract class SocketChannel extends AbstractSelectableChannel
|
|||||||
/**
|
/**
|
||||||
* Opens a socket channel.
|
* Opens a socket channel.
|
||||||
*
|
*
|
||||||
|
* @return the new <code>SocketChannel</code> object
|
||||||
|
*
|
||||||
* @exception IOException If an error occurs
|
* @exception IOException If an error occurs
|
||||||
*/
|
*/
|
||||||
public static SocketChannel open() throws IOException
|
public static SocketChannel open() throws IOException
|
||||||
@ -73,6 +75,8 @@ public abstract class SocketChannel extends AbstractSelectableChannel
|
|||||||
/**
|
/**
|
||||||
* Opens a channel and connects it to a remote address.
|
* Opens a channel and connects it to a remote address.
|
||||||
*
|
*
|
||||||
|
* @return the new <code>SocketChannel</code> object
|
||||||
|
*
|
||||||
* @exception AsynchronousCloseException If this channel is already connected.
|
* @exception AsynchronousCloseException If this channel is already connected.
|
||||||
* @exception ClosedByInterruptException If another thread interrupts the
|
* @exception ClosedByInterruptException If another thread interrupts the
|
||||||
* current thread while the connect operation is in progress, thereby closing
|
* current thread while the connect operation is in progress, thereby closing
|
||||||
@ -96,6 +100,9 @@ public abstract class SocketChannel extends AbstractSelectableChannel
|
|||||||
/**
|
/**
|
||||||
* Reads data from the channel.
|
* Reads data from the channel.
|
||||||
*
|
*
|
||||||
|
* @return the number of bytes read, zero is valid too, -1 if end of stream
|
||||||
|
* is reached
|
||||||
|
*
|
||||||
* @exception IOException If an error occurs
|
* @exception IOException If an error occurs
|
||||||
* @exception NotYetConnectedException If this channel is not yet connected.
|
* @exception NotYetConnectedException If this channel is not yet connected.
|
||||||
*/
|
*/
|
||||||
@ -112,6 +119,8 @@ public abstract class SocketChannel extends AbstractSelectableChannel
|
|||||||
/**
|
/**
|
||||||
* Writes data to the channel.
|
* Writes data to the channel.
|
||||||
*
|
*
|
||||||
|
* @return the number of bytes written, zero is valid too
|
||||||
|
*
|
||||||
* @exception IOException If an error occurs
|
* @exception IOException If an error occurs
|
||||||
* @exception NotYetConnectedException If this channel is not yet connected.
|
* @exception NotYetConnectedException If this channel is not yet connected.
|
||||||
*/
|
*/
|
||||||
@ -127,6 +136,8 @@ public abstract class SocketChannel extends AbstractSelectableChannel
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the valid operations for this channel.
|
* Retrieves the valid operations for this channel.
|
||||||
|
*
|
||||||
|
* @return the valid operations
|
||||||
*/
|
*/
|
||||||
public final int validOps()
|
public final int validOps()
|
||||||
{
|
{
|
||||||
@ -137,6 +148,9 @@ public abstract class SocketChannel extends AbstractSelectableChannel
|
|||||||
/**
|
/**
|
||||||
* Reads data from the channel.
|
* Reads data from the channel.
|
||||||
*
|
*
|
||||||
|
* @return the number of bytes read, zero is valid too, -1 if end of stream
|
||||||
|
* is reached
|
||||||
|
*
|
||||||
* @exception IOException If an error occurs
|
* @exception IOException If an error occurs
|
||||||
* @exception NotYetConnectedException If this channel is not yet connected.
|
* @exception NotYetConnectedException If this channel is not yet connected.
|
||||||
*/
|
*/
|
||||||
@ -145,6 +159,10 @@ public abstract class SocketChannel extends AbstractSelectableChannel
|
|||||||
/**
|
/**
|
||||||
* Connects the channel's socket to the remote address.
|
* Connects the channel's socket to the remote address.
|
||||||
*
|
*
|
||||||
|
* @return <code>true</code> if the channel got successfully connected,
|
||||||
|
* <code>false</code> if the channel is in non-blocking mode and connection
|
||||||
|
* operation is still in progress.
|
||||||
|
*
|
||||||
* @exception AlreadyConnectedException If this channel is already connected.
|
* @exception AlreadyConnectedException If this channel is already connected.
|
||||||
* @exception AsynchronousCloseException If this channel is already connected.
|
* @exception AsynchronousCloseException If this channel is already connected.
|
||||||
* @exception ClosedByInterruptException If another thread interrupts the
|
* @exception ClosedByInterruptException If another thread interrupts the
|
||||||
@ -191,6 +209,9 @@ public abstract class SocketChannel extends AbstractSelectableChannel
|
|||||||
/**
|
/**
|
||||||
* Reads data from the channel.
|
* Reads data from the channel.
|
||||||
*
|
*
|
||||||
|
* @return the number of bytes read, zero is valid too, -1 if end of stream
|
||||||
|
* is reached
|
||||||
|
*
|
||||||
* @exception IOException If an error occurs
|
* @exception IOException If an error occurs
|
||||||
* @exception NotYetConnectedException If this channel is not yet connected.
|
* @exception NotYetConnectedException If this channel is not yet connected.
|
||||||
*/
|
*/
|
||||||
@ -199,12 +220,16 @@ public abstract class SocketChannel extends AbstractSelectableChannel
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the channel's socket.
|
* Retrieves the channel's socket.
|
||||||
|
*
|
||||||
|
* @return the socket
|
||||||
*/
|
*/
|
||||||
public abstract Socket socket();
|
public abstract Socket socket();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Writes data to the channel.
|
* Writes data to the channel.
|
||||||
*
|
*
|
||||||
|
* @return the number of bytes written, zero is valid too
|
||||||
|
*
|
||||||
* @exception IOException If an error occurs
|
* @exception IOException If an error occurs
|
||||||
* @exception NotYetConnectedException If this channel is not yet connected.
|
* @exception NotYetConnectedException If this channel is not yet connected.
|
||||||
*/
|
*/
|
||||||
@ -213,6 +238,8 @@ public abstract class SocketChannel extends AbstractSelectableChannel
|
|||||||
/**
|
/**
|
||||||
* Writes data to the channel.
|
* Writes data to the channel.
|
||||||
*
|
*
|
||||||
|
* @return the number of bytes written, zero is valid too
|
||||||
|
*
|
||||||
* @exception IOException If an error occurs
|
* @exception IOException If an error occurs
|
||||||
* @exception NotYetConnectedException If this channel is not yet connected.
|
* @exception NotYetConnectedException If this channel is not yet connected.
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user