8022ba68100946ae5739622802b61a9eb9cc78f0
[fleet.git] / src / edu / berkeley / fleet / ships / CounterShip.java
1 package edu.berkeley.fleet.ships;
2 import edu.berkeley.fleet.*;
3
4 import java.util.*;
5 import java.io.*;
6
7 public class CounterShip extends Ship {
8
9     private int count = 0;
10
11     DataInbox   load      = new DataInbox(this, "load");
12     TokenInbox  decrement = new TokenInbox(this, "decrement");
13     TokenOutbox zero      = new TokenOutbox(this, "zero");
14
15     public CounterShip(Fleet fleet, String name) {
16         super(fleet, name);
17     }
18
19     public String getBalsaName() { return "counter"; }
20     public void service() {
21         if (!zero.readyForTokenFromShip()) return;
22         if (count==0 && load.dataReadyForShip()) {
23             count = load.removeDataForShip();
24             return;
25         }
26         if (count>0 && decrement.tokenReadyForShip()) {
27             decrement.removeTokenForShip();
28             count--;
29             if (count==0)
30                 zero.addTokenFromShip();
31         }
32     }
33
34 }