1 package edu.berkeley.fleet.ships;
2 import edu.berkeley.fleet.*;
7 public class FetchShip extends Ship {
9 InboxPort codebag = new InboxPort(this, "codebag");
10 TokenInPort release = new TokenInPort(this, "release");
11 TokenInPort revoke = new TokenInPort(this, "revoke");
12 TokenOutPort done = new TokenOutPort(this, "done");
14 public FetchShip(Fleet fleet, String name) {
18 public void service() {
19 if (codebag.empty()) return;
20 if (release.empty() && revoke.empty()) return;
21 if (!done.empty()) return;
22 int cbd = codebag.remove();
24 CodeBag cb = CodeBag.getCodeBagByDescriptor(cbd);
25 if (!revoke.empty()) {
27 Log.print("revoking codebag: " + cb);
31 throw new RuntimeException("bogus codebag -- this should not happen");
32 cb.dispatch(getFleet());