added "mem" ship
[fleet.git] / src / edu / berkeley / fleet / ships / Mem.java
1 package edu.berkeley.fleet.ships;
2 import edu.berkeley.fleet.interpreter.*;
3 import edu.berkeley.fleet.*;
4
5 import java.util.*;
6 import java.io.*;
7
8 public class Mem extends InterpreterShip {
9
10     DataInbox   read_addr  = new DataInbox(this,   "read_addr");
11     DataOutbox  read_data  = new DataOutbox(this,  "read_data");
12     DataInbox   write_addr = new DataInbox(this,   "write_addr");
13     DataInbox   write_data = new DataInbox(this,   "write_data");
14     TokenOutbox write_done = new TokenOutbox(this, "write_done");
15
16     public Mem(Interpreter fleet, String name) { super(fleet, name); }
17
18     public String getBalsaName() { return "mem"; }
19
20     public void service() {
21         if (read_addr.dataReadyForShip() &&
22             read_data.readyForItemFromShip()) {
23             Interpreter f = (Interpreter)getFleet();
24             read_data.addDataFromShip(f.readMem(read_addr.removeDataForShip()));
25         }
26
27         if (write_addr.dataReadyForShip() &&
28             write_data.dataReadyForShip() &&
29             write_done.readyForItemFromShip()) {
30             Interpreter f = (Interpreter)getFleet();
31             f.writeMem(write_addr.removeDataForShip(),
32                        write_data.removeDataForShip());
33             write_done.addTokenFromShip();
34         }
35
36     }
37
38 }