1 package edu.berkeley.fleet.interpreter.ships;
2 import edu.berkeley.fleet.interpreter.*;
3 import edu.berkeley.fleet.*;
8 public class Counter extends InterpreterShip {
10 private int count = 0;
12 DataInbox load = new DataInbox(this, "load");
13 TokenInbox decrement = new TokenInbox(this, "decrement");
14 TokenOutbox zero = new TokenOutbox(this, "zero");
16 public Counter(Interpreter fleet, String name) {
20 public String getBalsaName() { return "counter"; }
21 public void service() {
22 if (!zero.readyForTokenFromShip()) return;
23 if (count==0 && load.dataReadyForShip()) {
24 count = load.removeDataForShip();
27 if (count>0 && decrement.tokenReadyForShip()) {
28 decrement.removeTokenForShip();
31 zero.addTokenFromShip();