Mercurial > hg > Members > nobuyasu > Alice > DPPAlice
comparison src/alice/test/dpp/codesegment/philosophy/TakeForkCodeSegment.java @ 23:da62aa1f4d87
hg rename codesegment package
author | one |
---|---|
date | Mon, 10 Dec 2012 00:22:41 +0900 |
parents | src/alice/test/dpp/codesegment/TakeForkCodeSegment.java@fd370b35fac1 |
children | edd9ced13896 |
comparison
equal
deleted
inserted
replaced
22:fd370b35fac1 | 23:da62aa1f4d87 |
---|---|
1 package alice.test.dpp.codesegment.philosophy; | |
2 | |
3 import alice.codesegment.CodeSegment; | |
4 import alice.datasegment.CommandType; | |
5 import alice.datasegment.Receiver; | |
6 import alice.test.dpp.datasegment.Fork; | |
7 import alice.test.dpp.datasegment.Philosophy; | |
8 | |
9 public class TakeForkCodeSegment extends CodeSegment { | |
10 | |
11 /* | |
12 * Unuse CodeSegment | |
13 */ | |
14 Receiver arg1 = ids.create(CommandType.TAKE); | |
15 Receiver arg2 = ids.create(CommandType.TAKE); | |
16 Receiver arg3 = ids.create(CommandType.TAKE); | |
17 | |
18 public TakeForkCodeSegment(String pName, String rFork, String lFork) { | |
19 arg1.setKey(pName); | |
20 // dead lock | |
21 arg2.setKey(rFork); | |
22 arg3.setKey(lFork); | |
23 } | |
24 | |
25 @Override | |
26 public void run() { | |
27 Philosophy phil = arg1.asClass(Philosophy.class); | |
28 Fork rightFork = arg2.asClass(Fork.class); | |
29 Fork leftFork = arg3.asClass(Fork.class); | |
30 System.out.println(phil.getName() + " is trying to take the fork."); | |
31 | |
32 if (leftFork.getFork(phil.getName()) && rightFork.getFork(phil.getName()) ) { | |
33 phil.setState(Philosophy.State.EAT); | |
34 } else { | |
35 leftFork.onTheTable(phil.getName()); | |
36 rightFork.onTheTable(phil.getName()); | |
37 } | |
38 | |
39 new ScheduleCodeSegment(phil.getName()); | |
40 ods.update("local", phil.getName(), phil); | |
41 ods.update("local", leftFork.getForkName(), leftFork); | |
42 ods.update("local", rightFork.getForkName(), rightFork); | |
43 } | |
44 } |