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 }