run omegaCounter inverter study with Electric LE code fixed
[fleet.git] / misc / obsolete-ships / Counter.java
1 package edu.berkeley.fleet.interpreter.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 Counter extends InterpreterShip {
9
10     private int count = 0;
11
12     DataInbox   load      = new DataInbox(this, "load");
13     TokenInbox  decrement = new TokenInbox(this, "decrement");
14     TokenOutbox zero      = new TokenOutbox(this, "zero");
15
16     public Counter(Interpreter fleet, String name) {
17         super(fleet, name);
18     }
19
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();
25             return;
26         }
27         if (count>0 && decrement.tokenReadyForShip()) {
28             decrement.removeTokenForShip();
29             count--;
30             if (count==0)
31                 zero.addTokenFromShip();
32         }
33     }
34
35 }