]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - libjava/gnu/java/rmi/server/UnicastConnectionManager.java
Imported gcc-4.4.3
[msp430-gcc.git] / libjava / gnu / java / rmi / server / UnicastConnectionManager.java
diff --git a/libjava/gnu/java/rmi/server/UnicastConnectionManager.java b/libjava/gnu/java/rmi/server/UnicastConnectionManager.java
deleted file mode 100644 (file)
index fe08ad0..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
-  Copyright (c) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-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
-exception statement from your version. */
-
-package gnu.java.rmi.server;
-
-import java.rmi.server.RMISocketFactory;
-import java.rmi.server.RMIServerSocketFactory;
-import java.rmi.server.RMIClientSocketFactory;
-import java.rmi.RemoteException;
-import gnu.java.rmi.server.UnicastConnection;
-import java.util.Hashtable;
-import java.net.Socket;
-import java.net.ServerSocket;
-import java.io.IOException;
-import java.io.ObjectOutput;
-import java.io.ObjectInput;
-import java.lang.Thread;
-import java.lang.Runnable;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-public class UnicastConnectionManager
-       implements Runnable, ProtocolConstants {
-
-private static String localhost;
-private static Hashtable servers = new Hashtable();
-
-private Thread serverThread;
-private ServerSocket ssock;
-String serverName;
-int serverPort;
-private RMIServerSocketFactory serverFactory;
-private RMIClientSocketFactory clientFactory;
-
-static {
-        try {
-                localhost = InetAddress.getLocalHost().getHostName();
-        }
-        catch (UnknownHostException _) {
-                localhost = "localhost";
-        }
-}
-
-private UnicastConnectionManager(String host, int port, RMIClientSocketFactory csf) {
-       ssock = null;
-       serverName = host;
-       serverPort = port;
-       serverFactory = null;
-       clientFactory = csf;
-}
-
-private UnicastConnectionManager(int port, RMIServerSocketFactory ssf) {
-       try {
-               ssock = ssf.createServerSocket(port);
-               serverPort = ssock.getLocalPort();
-       }
-       catch (IOException _) {
-               try {
-                       ssock = ssf.createServerSocket(0);
-                       serverPort = ssock.getLocalPort();
-               }
-               catch (IOException __) {
-                       ssock = null;
-                       serverPort = 0;
-               }
-       }
-       serverName = localhost;
-       serverFactory = ssf;
-       clientFactory = null;
-}
-
-/**
- * Return a client connection manager which will connect to the given
- * host/port.
- */
-public static synchronized UnicastConnectionManager getInstance(String host, int port, RMIClientSocketFactory csf) {
-//System.out.println("getInstance: " + host + "," + port + "," + csf);
-       if (csf == null) {
-               csf = RMISocketFactory.getSocketFactory();
-       }
-       TripleKey key = new TripleKey(host, port, csf);
-       UnicastConnectionManager man = (UnicastConnectionManager)servers.get(key);
-       if (man == null) {
-               man = new UnicastConnectionManager(host, port, csf);
-               servers.put(key, man);
-       }
-       return (man);
-}
-
-/**
- * Return a server connection manager which will accept connection on the
- * given port.
- */
-public static synchronized UnicastConnectionManager getInstance(int port, RMIServerSocketFactory ssf) {
-//System.out.println("getInstance: " + port + "," + ssf);
-       if (ssf == null) {
-               ssf = RMISocketFactory.getSocketFactory();
-       }
-       TripleKey key = new TripleKey(localhost, port, ssf);
-       UnicastConnectionManager man = (UnicastConnectionManager)servers.get(key);
-       if (man == null) {
-               man = new UnicastConnectionManager(port, ssf);
-               // The provided port might not be the set port.
-               key.port = man.serverPort;
-               servers.put(key, man);
-       }
-       return (man);
-}
-
-/**
- * Get a connection from this manager.
- */
-public UnicastConnection getConnection() throws IOException {
-       if (ssock == null) {
-               return (getClientConnection());
-       }
-       else {
-               return (getServerConnection());
-       }
-}
-
-/**
- * Accept a connection to this server.
- */
-private UnicastConnection getServerConnection() throws IOException {
-       Socket sock = ssock.accept();
-       UnicastConnection conn = new UnicastConnection(this, sock);
-       conn.acceptConnection();
-//System.out.println("Server connection " + conn);
-       return (conn);
-}
-
-/**
- * Make a conection from this client to the server.
- */
-private UnicastConnection getClientConnection() throws IOException {
-       Socket sock = clientFactory.createSocket(serverName, serverPort);
-       UnicastConnection conn = new UnicastConnection(this, sock);
-       conn.makeConnection(DEFAULT_PROTOCOL);
-//System.out.println("Client connection " + conn);
-       return (conn);
-}
-
-/**
- * Discard a connection when we're done with it - maybe it can be
- * recycled.
- */
-public void discardConnection(UnicastConnection conn) {
-//System.out.println("Discarding connection " + conn);
-       conn.disconnect();
-}
-
-/**
- * Start a server on this manager if it's a server socket and we've not
- * already got one running.
- */
-public void startServer() {
-       synchronized(this) {
-               if (ssock == null || serverThread != null) {
-                       return;
-               }
-               serverThread = new Thread(this);
-       }
-       serverThread.start();
-}
-
-/**
- * Server thread for connection manager.
- */
-public void run() {
-       for (;;) {
-               try {
-//System.out.println("Waiting for connection on " + serverPort);
-                       UnicastConnection conn = getServerConnection();
-                       (new Thread(conn)).start();
-               }
-               catch (Exception e) {
-                       e.printStackTrace();
-               }
-       }
-}
-
-/**
- * Serialization routine.
- */
-void write(ObjectOutput out) throws IOException {
-        out.writeUTF(serverName);
-        out.writeInt(serverPort);
-}
-
-/**
- * Serialization routine.
- */
-static UnicastConnectionManager read(ObjectInput in) throws IOException {
-        String host = in.readUTF();
-        int port = in.readInt();
-       RMIClientSocketFactory csf = ((RMIObjectInputStream)in).manager.clientFactory;
-        return (getInstance(host, port, csf));
-}
-
-}
-
-/**
- * This is use as the hashkey for the client/server connections.
- */
-class TripleKey {
-
-String host;
-int port;
-Object other;
-
-TripleKey(String host, int port, Object other) {
-       this.host = host;
-       this.port = port;
-       this.other = other;
-}
-
-/**
- * Hash code just include the host and other - we ignore the port since
- * this has unusual matching behaviour.
- */
-public int hashCode() {
-       return (host.hashCode() ^ other.hashCode());
-}
-
-public boolean equals(Object obj) {
-       if (obj instanceof TripleKey) {
-               TripleKey other = (TripleKey)obj;
-               if (this.host.equals(other.host) &&
-                   this.other == other.other &&
-                   (this.port == other.port || this.port == 0 || other.port == 0)) {
-                       return (true);
-               }
-       }
-       return (false);
-}
-
-}