Java Examples In A Nutshell (3rd Edition) [Electronic resources]

O'Reilly Media, Inc

نسخه متنی -صفحه : 285/ 225
نمايش فراداده

21.8 The MudPerson Class

Example 21-7 shows the MudPerson class. This is the simplest of the remote objects in the MUD system. It implements the two remote methods defined by the RemoteMudPerson interface and also defines a few nonremote methods used by the MudClient class of Example 21-8. The remote methods are quite simple: one simply returns a description string to the caller, and the other writes a message to a stream where the user can see it.

Example 21-7. MudPerson.java
package je3.rmi;
import java.rmi.*;
import java.rmi.server.*;
import java.io.*;
import je3.rmi.Mud.*;
/**
* This is the simplest of the remote objects that we
 implement for the MUD.
* It maintains only a little bit of state, and has only two exported
* methods 
**/
public class MudPerson extends UnicastRemoteObject 
implements RemoteMudPerson {
String name;             // The name of the person 
String description;      // The person's description
PrintWriter tellStream;  // Where to send messages we receive
public MudPerson(String n, String d, PrintWriter out)
throws RemoteException
{
name = n;
description = d;
tellStream = out;
}
/** Return the person's name.  Not a remote method */
public String getName( ) { return name; }
/** Set the person's name.  Not a remote method */
public void setName(String n) { name = n; }
/** Set the person's description.  Not a remote method */
public void setDescription(String d) { description = d; }
/** Set the stream that messages to us should be written to.
 Not remote. */
public void setTellStream(PrintWriter out) { tellStream = out; }
/** A remote method that returns this person's description */
public String getDescription( ) throws RemoteException {
return description;
}
/** 
* A remote method that delivers a message to the person.
* I.e. it delivers a message to the user controlling the "person"
**/
public void tell(String message) throws RemoteException {
tellStream.println(message);
tellStream.flush( );
}
}