/*
 * @(#)RMIClientSocketFactory.java	1.11 03/12/19
 *
 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */
package java.rmi.server;
import java.io.*;
import java.net.*;
/**
 * An RMIClientSocketFactory instance is used by the RMI runtime
 * in order to obtain client sockets for RMI calls.  A remote object can be
 * associated with an RMIClientSocketFactory when it is
 * created/exported via the constructors or exportObject methods
 * of java.rmi.server.UnicastRemoteObject and
 * java.rmi.activation.Activatable .
 *
 * 
An RMIClientSocketFactory instance associated with a remote
 * object will be downloaded to clients when the remote object's reference is
 * transmitted in an RMI call.  This RMIClientSocketFactory will
 * be used to create connections to the remote object for remote method calls.
 *
 * 
An RMIClientSocketFactory instance can also be associated
 * with a remote object registry so that clients can use custom socket
 * communication with a remote object registry.
 *
 * 
An implementation of this interface should be serializable and
 * should implement {@link Object#equals} to return true when
 * passed an instance that represents the same (functionally equivalent)
 * client socket factory, and false otherwise (and it should also
 * implement {@link Object#hashCode} consistently with its
 * Object.equals implementation).
 *
 * @version 1.11, 12/19/03
 * @author  Ann Wollrath
 * @author  Peter Jones
 * @since   1.2
 * @see     java.rmi.server.UnicastRemoteObject
 * @see     java.rmi.activation.Activatable
 * @see     java.rmi.registry.LocateRegistry
 */
public interface RMIClientSocketFactory {
    /**
     * Create a client socket connected to the specified host and port.
     * @param  host   the host name
     * @param  port   the port number
     * @return a socket connected to the specified host and port.
     * @exception IOException if an I/O error occurs during socket creation
     * @since 1.2
     */
    public Socket createSocket(String host, int port)
	throws IOException;
}