--- /dev/null
+package edu.berkeley.fleet.ships;
+import edu.berkeley.fleet.*;
+
+import java.util.*;
+import java.io.*;
+
+public class CounterShip extends Ship {
+
+ private int count = -1;
+ private int loaded = 0;
+
+ TokenOutbox zero = new TokenOutbox(this, "zero");
+ TokenOutbox positive = new TokenOutbox(this, "positive");
+ DataInbox load = new DataInbox(this, "load");
+ TokenInbox ask = new TokenInbox(this, "ask");
+
+ public CounterShip(Fleet fleet, String name) {
+ super(fleet, name);
+ }
+
+ public void service() {
+ if (!zero.readyForTokenFromShip()) return;
+ if (!positive.readyForTokenFromShip()) return;
+ if (load.dataReadyForShip()) {
+ if(loaded == 0) {
+ count = load.removeDataForShip();
+ loaded = 1;
+ }
+ }
+ if (ask.tokenReadyForShip()) {
+ if(loaded == 1) {
+ ask.removeTokenForShip();
+ if (count > 0) {
+ count--;
+ positive.addTokenFromShip();
+ } else if (count<=0) {
+ zero.addTokenFromShip();
+ loaded = 0;
+ }
+ }
+ }
+ }
+
+}
CodeBag cb = CodeBag.getCodeBagByDescriptor(cbd);
if (revoke.tokenReadyForShip()) {
revoke.removeTokenForShip();
- Log.print("revoking codebag: " + cb);
+ Log.print("revoking codebag: " + cb + "\n");
} else {
release.removeTokenForShip();
if (cb==null)