2003-01-10 Michael Koch <konqueror@gmx.de>
authorMichael Koch <konqueror@gmx.de>
Sat, 11 Jan 2003 01:17:19 +0000 (01:17 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Sat, 11 Jan 2003 01:17:19 +0000 (01:17 +0000)
* 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

libjava/ChangeLog
libjava/java/net/DatagramSocket.java
libjava/java/net/MulticastSocket.java
libjava/java/net/ServerSocket.java
libjava/java/net/Socket.java

index 562a6afbc8bd1f67f57c4702a6895ea7c5ff4738..e4d66e96ad35c84e96becd57b1aa05f6401251d5 100644 (file)
@@ -1,3 +1,24 @@
+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
index 2cef7b46c284b0f3e33410a697d2c7d6e589691e..c286d650b73699985dd555d7768f24f56bcd68a4 100644 (file)
@@ -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)
+      {
+      }
   }
 
   /**
index 2700ebee511f17b014b025cb1e83bcc6409df311..2535a48bea0cc0064097f529af8048555de0cfef 100644 (file)
@@ -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);
   }
 
   /**
index 62917b6a8a5731f3cfc78fdd7144d1ac9326b578..e2f8e637d09d16e0b8b67fbf1679b8da92c3375c 100644 (file)
@@ -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;
   }
 
   /**
index 592f39a3dd3eeb58de0df7b1f1b79cce11cca374..e57c1ed5381016f4a670f324f57d0ef79fd2be5d 100644 (file)
@@ -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;
   }
 
   /**