1 package edu.berkeley.fleet.interpreter;
2 import edu.berkeley.fleet.api.*;
3 import edu.berkeley.fleet.doc.*;
7 /** a ship, which belongs to a fleet and which may have many ports */
8 abstract class InterpreterShip extends Ship {
10 /** You should instantiate a bunch of Inboxes and Outboxes in your constructor */
11 public InterpreterShip(Interpreter fleet, String name, String type) {
16 private Interpreter fleet;
18 private HashMap<String,InterpreterPump> ports = new HashMap<String,InterpreterPump>();
20 public Iterable<Pump> getPumps() { return (Iterable<Pump>)(Object)ports.values(); }
21 public String getType() { return type; }
22 public Fleet getFleet() { return fleet; }
23 public Interpreter getInterpreter() { return fleet; }
25 public void setShipDescription(ShipDescription sd) {
26 for(InterpreterPump ibb : ports.values()) {
27 for(PumpDescription bbd : sd) {
28 if (bbd.getName().equals(ibb.getName()))
29 ibb.setDescription(bbd);
35 * Override this method, check inboxes for the data you need, and
36 * if you find it, deposit results in an outbox; we'll take care
39 public abstract void service();
41 public final void _service() {
42 for(InterpreterPump p : ports.values()) p.service();
46 protected void addPump(String name, InterpreterPump port) {
47 ports.put(name, port);
50 public void shutdown() {
51 for(InterpreterPump p : ports.values())