package edu.berkeley.fleet.interpreter;
import edu.berkeley.fleet.api.*;
-
-import edu.berkeley.fleet.api.*;
+import edu.berkeley.fleet.doc.*;
import java.util.*;
import java.io.*;
/** a ship, which belongs to a fleet and which may have many ports */
-public abstract class InterpreterShip extends Ship {
+abstract class InterpreterShip extends Ship {
/** You should instantiate a bunch of Inboxes and Outboxes in your constructor */
- public InterpreterShip(Interpreter fleet, String name) { this.fleet = fleet; }
+ public InterpreterShip(Interpreter fleet, String name, String type) {
+ this.fleet = fleet;
+ this.type = type;
+ }
private Interpreter fleet;
-
- // this is dumb, the fpga fleet currently requires these in declaration-order; it shouldn't
- private ArrayList<InterpreterBenkoBox> portlist = new ArrayList<InterpreterBenkoBox>();
+ private String type;
private HashMap<String,InterpreterBenkoBox> ports = new HashMap<String,InterpreterBenkoBox>();
- public Iterable<BenkoBox> getBenkoBoxes() { return (Iterable<BenkoBox>)(Object)portlist; }
- public String getType() { return getClass().getSimpleName(); }
- public Fleet getFleet() { return fleet; }
- public Interpreter getInterpreter() { return fleet; }
+ public Iterable<BenkoBox> getBenkoBoxes() { return (Iterable<BenkoBox>)(Object)ports.values(); }
+ public String getType() { return type; }
+ public Fleet getFleet() { return fleet; }
+ public Interpreter getInterpreter() { return fleet; }
+
+ public void setShipDescription(ShipDescription sd) {
+ for(InterpreterBenkoBox ibb : ports.values()) {
+ for(BenkoBoxDescription bbd : sd) {
+ if (bbd.getName().equals(ibb.getName()))
+ ibb.setDescription(bbd);
+ }
+ }
+ }
/**
* Override this method, check inboxes for the data you need, and
service();
}
- void addBenkoBox(String name, InterpreterBenkoBox port) { ports.put(name, port); portlist.add(port); }
+ protected void addBenkoBox(String name, InterpreterBenkoBox port) {
+ ports.put(name, port);
+ }
public void shutdown() {
for(InterpreterBenkoBox p : ports.values())