Mercurial > hg > Members > nobuyasu > Alice > DPPAlice
view src/alice/test/dpp/codesegment/philosophy/TakeForkCodeSegment.java @ 31:b815328a8d42 draft
modified TakeForkCodeSegment
author | one |
---|---|
date | Tue, 29 Jan 2013 17:31:01 +0900 |
parents | f77f0bb99f35 |
children |
line wrap: on
line source
package alice.test.dpp.codesegment.philosophy; import alice.codesegment.CodeSegment; import alice.datasegment.CommandType; import alice.datasegment.Receiver; import alice.test.dpp.datasegment.Fork; import alice.test.dpp.datasegment.Philosophy; public class TakeForkCodeSegment extends CodeSegment { Receiver arg1 = ids.create(CommandType.TAKE); Receiver arg2 = ids.create(CommandType.TAKE); Receiver arg3 = ids.create(CommandType.TAKE); public TakeForkCodeSegment(String pName, String rFork, String lFork) { arg1.setKey(pName); // dead lock arg2.setKey(rFork); arg3.setKey(lFork); } @Override public void run() { Philosophy phil = arg1.asClass(Philosophy.class); Fork rightFork = arg2.asClass(Fork.class); Fork leftFork = arg3.asClass(Fork.class); System.out.println(phil.getName() + " is trying to take the fork."); new EatCodeSegment(phil.getName()); ods.update("local", phil.getName(), phil); ods.update("local", leftFork.getForkName(), leftFork); ods.update("local", rightFork.getForkName(), rightFork); /* if (leftFork.takeFork(phil.getName()) && rightFork.takeFork(phil.getName()) ) { phil.setState(Philosophy.State.EAT); new EatCodeSegment(phil.getName()); } else { // leftFork.onTheTable(phil.getName()); // rightFork.onTheTable(phil.getName()); new TakeForkCodeSegment(phil.getName(), phil.getRightFork(), phil.getLeftFork()); } */ } }