diff options
author | Michael Koch <konqueror@gmx.de> | 2003-01-11 01:17:19 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2003-01-11 01:17:19 +0000 |
commit | 927818a5984c6fe521cd8e6c9a11c7f3599a87a5 (patch) | |
tree | 52d5c61480de7bafcb2350a66e100dff889e5727 | |
parent | b1771c6ac2f7917c10a8c47c61201f88e63eb2bb (diff) | |
download | gcc-927818a5984c6fe521cd8e6c9a11c7f3599a87a5.tar.gz |
2003-01-10 Michael Koch <konqueror@gmx.de>
* java/net/DatagramSocket.java
(ch): Description added.
(remotePort): Initialize with -1.
(connect): Doesnt throws SocketException.
* java/net/MulticastSocket.java
(setInterface): Merge with Classpath.
* java/net/ServerSocket.java
(closed): New member variable.
(bind): Check if socket is closed.
(close): Close an associated channel too, set new value to closed.
(isBound): Reindented.
(isClosed): Implemented.
* java/net/Socket.java
(closed): New member variable.
(bind): Check if socket is closed.
(connect): Check if socket is closed.
(close): Close an associated channel too, set new value to closed.
(isClosed): Implemented.
From-SVN: r61185
-rw-r--r-- | libjava/ChangeLog | 21 | ||||
-rw-r--r-- | libjava/java/net/DatagramSocket.java | 14 | ||||
-rw-r--r-- | libjava/java/net/MulticastSocket.java | 13 | ||||
-rw-r--r-- | libjava/java/net/ServerSocket.java | 16 | ||||
-rw-r--r-- | libjava/java/net/Socket.java | 19 |
5 files changed, 70 insertions, 13 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 562a6afbc8b..e4d66e96ad3 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,26 @@ 2003-01-10 Michael Koch <konqueror@gmx.de> + * java/net/DatagramSocket.java + (ch): Description added. + (remotePort): Initialize with -1. + (connect): Doesnt throws SocketException. + * java/net/MulticastSocket.java + (setInterface): Merge with Classpath. + * java/net/ServerSocket.java + (closed): New member variable. + (bind): Check if socket is closed. + (close): Close an associated channel too, set new value to closed. + (isBound): Reindented. + (isClosed): Implemented. + * java/net/Socket.java + (closed): New member variable. + (bind): Check if socket is closed. + (connect): Check if socket is closed. + (close): Close an associated channel too, set new value to closed. + (isClosed): Implemented. + +2003-01-10 Michael Koch <konqueror@gmx.de> + * java/awt/DisplayMode.java (equals): Fixed argument type and implementation. diff --git a/libjava/java/net/DatagramSocket.java b/libjava/java/net/DatagramSocket.java index 2cef7b46c28..c286d650b73 100644 --- a/libjava/java/net/DatagramSocket.java +++ b/libjava/java/net/DatagramSocket.java @@ -72,6 +72,10 @@ public class DatagramSocket */ DatagramSocketImpl impl; + /** + * The unique DatagramChannel object associated with this datagram socket, + * or null. + */ DatagramChannel ch; /** @@ -82,7 +86,7 @@ public class DatagramSocket /** * This is the port we are "connected" to */ - private int remotePort; + private int remotePort = -1; /** * Creates a DatagramSocket from a specified DatagramSocketImpl instance @@ -439,7 +443,6 @@ public class DatagramSocket * @since 1.2 */ public void connect(InetAddress address, int port) - throws SocketException { if (address == null) throw new IllegalArgumentException ("Address may not be null"); @@ -451,10 +454,15 @@ public class DatagramSocket if (sm != null) sm.checkAccept(address.getHostName (), port); + try + { impl.connect (address, port); - remoteAddress = address; remotePort = port; + } + catch (SocketException e) + { + } } /** diff --git a/libjava/java/net/MulticastSocket.java b/libjava/java/net/MulticastSocket.java index 2700ebee511..2535a48bea0 100644 --- a/libjava/java/net/MulticastSocket.java +++ b/libjava/java/net/MulticastSocket.java @@ -1,5 +1,6 @@ /* MulticastSocket.java -- Class for using multicast sockets - Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 + Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -163,13 +164,15 @@ public class MulticastSocket extends DatagramSocket /** * Sets the interface to use for sending multicast packets. * - * @param inf The new interface to use + * @param addr The new interface to use. * - * @exception SocketException If an error occurs + * @exception SocketException If an error occurs. + * + * @since 1.4 */ - public void setInterface(InetAddress inf) throws SocketException + public void setInterface(InetAddress addr) throws SocketException { - impl.setOption(SocketOptions.IP_MULTICAST_IF, inf); + impl.setOption(SocketOptions.IP_MULTICAST_IF, addr); } /** diff --git a/libjava/java/net/ServerSocket.java b/libjava/java/net/ServerSocket.java index 62917b6a8a5..e2f8e637d09 100644 --- a/libjava/java/net/ServerSocket.java +++ b/libjava/java/net/ServerSocket.java @@ -77,6 +77,8 @@ public class ServerSocket */ private ServerSocketChannel ch; + private boolean closed = false; + /** * Constructor that simply sets the implementation. * @@ -200,6 +202,9 @@ public class ServerSocket */ public void bind (SocketAddress endpoint, int backlog) throws IOException { + if (closed) + throw new SocketException ("ServerSocket is closed"); + if (impl == null) throw new IOException ("Cannot initialize Socket implementation"); @@ -315,7 +320,13 @@ public class ServerSocket */ public void close () throws IOException { - impl.close(); + if (impl != null) + impl.close (); + + if (ch != null) + ch.close (); + + closed = true; } /** @@ -358,8 +369,7 @@ public class ServerSocket */ public boolean isClosed() { - // FIXME: implement this - return false; + return closed; } /** diff --git a/libjava/java/net/Socket.java b/libjava/java/net/Socket.java index 592f39a3dd3..e57c1ed5381 100644 --- a/libjava/java/net/Socket.java +++ b/libjava/java/net/Socket.java @@ -85,6 +85,8 @@ public class Socket SocketChannel ch; // this field must have been set if created by SocketChannel + private boolean closed = false; + // Constructors /** @@ -308,6 +310,9 @@ public class Socket */ public void bind (SocketAddress bindpoint) throws IOException { + if (closed) + throw new SocketException ("Socket is closed"); + if ( !(bindpoint instanceof InetSocketAddress)) throw new IllegalArgumentException (); @@ -330,6 +335,9 @@ public class Socket public void connect (SocketAddress endpoint) throws IOException { + if (closed) + throw new SocketException ("Socket is closed"); + if (! (endpoint instanceof InetSocketAddress)) throw new IllegalArgumentException ("Address type not supported"); @@ -357,6 +365,9 @@ public class Socket public void connect (SocketAddress endpoint, int timeout) throws IOException { + if (closed) + throw new SocketException ("Socket is closed"); + if (! (endpoint instanceof InetSocketAddress)) throw new IllegalArgumentException ("Address type not supported"); @@ -853,6 +864,11 @@ public class Socket { if (impl != null) impl.close(); + + if (ch != null) + ch.close(); + + closed = true; } /** @@ -1035,8 +1051,7 @@ public class Socket */ public boolean isClosed () { - // FIXME: implement this. - return false; + return closed; } /** |