aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorMichael Koch <konqueror@gmx.de>2003-01-11 01:17:19 +0000
committerTom Tromey <tromey@gcc.gnu.org>2003-01-11 01:17:19 +0000
commit927818a5984c6fe521cd8e6c9a11c7f3599a87a5 (patch)
tree52d5c61480de7bafcb2350a66e100dff889e5727 /libjava
parentb1771c6ac2f7917c10a8c47c61201f88e63eb2bb (diff)
downloadgcc-927818a5984c6fe521cd8e6c9a11c7f3599a87a5.zip
gcc-927818a5984c6fe521cd8e6c9a11c7f3599a87a5.tar.gz
gcc-927818a5984c6fe521cd8e6c9a11c7f3599a87a5.tar.bz2
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
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog21
-rw-r--r--libjava/java/net/DatagramSocket.java14
-rw-r--r--libjava/java/net/MulticastSocket.java13
-rw-r--r--libjava/java/net/ServerSocket.java16
-rw-r--r--libjava/java/net/Socket.java19
5 files changed, 70 insertions, 13 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 562a6af..e4d66e9 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 2cef7b4..c286d65 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 2700ebe..2535a48 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 62917b6..e2f8e63 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 592f39a..e57c1ed 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;
}
/**