1 package edu.berkeley.fleet.interpreter;
2 import edu.berkeley.fleet.api.*;
4 import edu.berkeley.fleet.api.*;
8 /** a ship, which belongs to a fleet and which may have many ports */
9 public abstract class InterpreterShip extends Ship {
11 /** You should instantiate a bunch of Inboxes and Outboxes in your constructor */
12 public InterpreterShip(Interpreter fleet, String name) { this.fleet = fleet; }
14 private Interpreter fleet;
16 // this is dumb, the fpga fleet currently requires these in declaration-order; it shouldn't
17 private ArrayList<InterpreterBenkoBox> portlist = new ArrayList<InterpreterBenkoBox>();
18 private HashMap<String,InterpreterBenkoBox> ports = new HashMap<String,InterpreterBenkoBox>();
20 public Iterable<BenkoBox> getBenkoBoxes() { return (Iterable<BenkoBox>)(Object)portlist; }
21 public String getType() { return getClass().getSimpleName(); }
22 public Fleet getFleet() { return fleet; }
23 public Interpreter getInterpreter() { return fleet; }
26 * Override this method, check inboxes for the data you need, and
27 * if you find it, deposit results in an outbox; we'll take care
30 public abstract void service();
32 public final void _service() {
33 for(InterpreterBenkoBox p : ports.values()) p.service();
37 void addBenkoBox(String name, InterpreterBenkoBox port) { ports.put(name, port); portlist.add(port); }
39 public void shutdown() {
40 for(InterpreterBenkoBox p : ports.values())