README 1. This is the RMI version of SASSY. It runs with jdk1.5.0. Check your .cshrc file to see whether /usr/local/jdk1.5.0/bin is on your path. If not, add it to the path. 2. To compile this program, type "compile" which invokes "javac" to compile all of the .java files. It also invoke "rmic" to compile the two files with rmi remote method. 3. To run this program, you'll need log onto at least three machines, one for the GNS(Global Name Server), two for the PEs. To log onto a different machine, type "rlogin [machine name]" The following are some machine names (in lab 307): atlas fargo baxley canton mcrae cordele dublin rockmart newnan tallulah columbus ellijay greensboro waco forsyth On one machine, type "rungns" to run the Global Name Server. This will set up the rmi registry and then run the GNS. Note that GNS must run fist before any PEs can run. Then on another machine, run a PE by typing "runpe". Repeat this on a third machine. In the "runpe" file, the machine where GNS is running is specified. You may need to modify this file according to where you run the GNS. The sample "runpe" file has "baxley" as the machine for GNS. You may want to change it. 4. RMI is designed in such a way that a server that offers remote methods can only be killed manually or by another thread, so when the simulation runs to end, the GNS will kill all the PEs, but the GNS itself will need you to manually kill. 5. RMI is also designed in a way that the rmi registry can only be stopped manually, so after each run, you'll need to kill the rmi registry. To kill it, type "ps" or "ps -ef|grep [your login name]", you will see a process named "rmiregistry" is running. Find the process id ( a number) and then type "kill [id]", the rmiregistry will be killed and you can begin a new run. 6. There is a testing coming with SASSY. It's called "Ping.java". What this testing program does is to send messages to each other, just like playing Ping-Pong ball. Take a look at the Ping.java and you'll figure out how to create a simulation application. The following are some pointers to how to create a simulation application that can run with SASSY: - You should create at least one class that extends the LogicalProcess class. - You need to implement all the abstract methods specified by LogicalProcess class. - You need to create a configration file to tell SASSY how many LPs you want to create and what they look like. The format of the configuration file: id name className data where id: application-assigned unique id for this LP (e.g. 1, 2) name: application-assigned unique name for this LP (e.g. ping1, ping2) className: the name of the class of which this LP is an instance of (e.g. Ping) data: application specific data(for your use, it can be anything you need) the 4 items are tab-delimited The "name" is totally for your use and you can use whatever name you like for your LPs. But "id" is very important and it must be unique. When you specify where to send a message, you need to use id, not the name. 7. You can find the java documentation for this program at: http://www.cs.uga.edu/~xiong/simulation/sassy/doc/ If you create new files and want to include them in the java documentation, you can do this by typing "rundoc" which will run "javadoc" and create java documents in the "doc" directory.