//     $Id: ServerRMItoClientIface.java,v 3.3 1998/12/09 20:07:23 mk2z Exp $    
 ////////////////////////////////////////////////////////////////////////////
 //
 // File: ServerRMItoClientIface.java
 //
 // Purpose: This file defines the interface that ServerRMI will
 //         export to its RegistryServer, and then passed to 
 //        whichever client wants to invoke the ServerRMI's 
 //        methods remotely.
 //
 // Authors:
 //  Orim   Miro Kresonja  mk2z@virginia.edu
 //  rgb    Rob Bartholet 
 //
 // Modifications:
 //   02-NOV-1998  Orim  Initial creation
 //   06-NOV-1998  rgb   Added version control header info
 //   15-NOV-1998  Orim  Initial modifications for version 3.0
 //
 ////////////////////////////////////////////////////////////////////////////
 import java.rmi.*;
 public interface ServerRMItoClientIface
     extends java.rmi.Remote
 {
   ///////////////////////////////////////////////////////////////////
   //
   //  ConnectClient - This is a stub for the ServerRMI's ConnectClient
   //  method. The clients will ask for an initial map, so they can 
   //  decide which module they want.
   //   
   ///////////////////////////////////////////////////////////////////
   Map ConnectClient ()
   throws RemoteException, Exception;
   ///////////////////////////////////////////////////////////////////
   //
   //  RegisterClient - This is a stub for the ServerRMI's RegisterClient
   //  method. The Clients will politely ask whether they can have a 
   //  specific module number, and will be told their password.
   //   
   ///////////////////////////////////////////////////////////////////
   int RegisterClient (int module_num, ClientRMIIface obj)
   throws RemoteException, Exception;
   ///////////////////////////////////////////////////////////////////
   //
   //  ReceiveModule - This is a stub for the ServerRMI's ReceiveModule
   //  method. Each time a client is done modifying its module, they 
   //  will pass it back to the server using this method.
   //   
   ///////////////////////////////////////////////////////////////////
   void ReceiveModule (Module m, int client_id)
   throws RemoteException, Exception;
   ///////////////////////////////////////////////////////////////////
   //
   //  ClientQuit - This is a stub for the ServerRMI's ClientQuit
   //  method. The client is shutting down, and is notifying the server.
   //   
   ///////////////////////////////////////////////////////////////////
   void ClientQuit (int client_id, int password)
   throws RemoteException, Exception;
 }
 ////////////////////////////////////////////////////////////////////////////