Mercurial > hg > Members > nobuyasu > Alice > DPPAlice
view src/alice/test/dpp/codesegment/TakeForkCodeSegment.java @ 5:2db314b1a970
add EatCodeSegment TakeForkCodeSegment, ForkState, Table
author | one |
---|---|
date | Sun, 25 Nov 2012 17:08:21 +0900 |
parents | |
children | b59c04a332a1 |
line wrap: on
line source
package alice.test.dpp.codesegment; import alice.codesegment.CodeSegment; import alice.datasegment.CommandType; import alice.datasegment.Receiver; import alice.test.dpp.model.Fork; import alice.test.dpp.model.Philosophy; public class TakeForkCodeSegment extends CodeSegment { Philosophy phil; Receiver arg1 = ids.create(CommandType.TAKE); Receiver arg2 = ids.create(CommandType.TAKE); public TakeForkCodeSegment(Philosophy p) { phil = p; arg1.setKey(phil.getLeftFork()); arg2.setKey(phil.getRightFork()); } @Override public void run() { System.out.println(phil + " is trying to take the fork."); Fork leftFork = arg1.asClass(Fork.class); Fork rightFork = arg2.asClass(Fork.class); if (leftFork.getFork(phil) && rightFork.getFork(phil) ) { new EatCodeSegment(phil); } else { leftFork.onTheTable(phil); rightFork.onTheTable(phil); } ods.update("local", leftFork.getForkName(), leftFork); ods.update("local", rightFork.getForkName(), rightFork); } }