annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23
da62aa1f4d87 hg rename codesegment package
one
parents: 22
diff changeset
1 package alice.test.dpp.codesegment.philosophy;
5
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
2
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
3 import alice.codesegment.CodeSegment;
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
4 import alice.datasegment.CommandType;
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
5 import alice.datasegment.Receiver;
20
6018e62cb198 modified
one
parents: 15
diff changeset
6 import alice.test.dpp.datasegment.Fork;
6018e62cb198 modified
one
parents: 15
diff changeset
7 import alice.test.dpp.datasegment.Philosophy;
5
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
8
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
9 public class TakeForkCodeSegment extends CodeSegment {
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
10
22
fd370b35fac1 modfied codeSegment
one
parents: 20
diff changeset
11 /*
fd370b35fac1 modfied codeSegment
one
parents: 20
diff changeset
12 * Unuse CodeSegment
fd370b35fac1 modfied codeSegment
one
parents: 20
diff changeset
13 */
5
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
14 Receiver arg1 = ids.create(CommandType.TAKE);
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
15 Receiver arg2 = ids.create(CommandType.TAKE);
14
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
16 Receiver arg3 = ids.create(CommandType.TAKE);
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
17
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
18 public TakeForkCodeSegment(String pName, String rFork, String lFork) {
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
19 arg1.setKey(pName);
15
7e91e919a7de modified
one
parents: 14
diff changeset
20 // dead lock
14
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
21 arg2.setKey(rFork);
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
22 arg3.setKey(lFork);
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
23 }
5
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
24
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
25 @Override
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
26 public void run() {
14
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
27 Philosophy phil = arg1.asClass(Philosophy.class);
5
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
28 Fork rightFork = arg2.asClass(Fork.class);
14
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
29 Fork leftFork = arg3.asClass(Fork.class);
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
30 System.out.println(phil.getName() + " is trying to take the fork.");
15
7e91e919a7de modified
one
parents: 14
diff changeset
31
14
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
32 if (leftFork.getFork(phil.getName()) && rightFork.getFork(phil.getName()) ) {
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
33 phil.setState(Philosophy.State.EAT);
5
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
34 } else {
14
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
35 leftFork.onTheTable(phil.getName());
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
36 rightFork.onTheTable(phil.getName());
5
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
37 }
15
7e91e919a7de modified
one
parents: 14
diff changeset
38
14
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
39 new ScheduleCodeSegment(phil.getName());
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
40 ods.update("local", phil.getName(), phil);
5
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
41 ods.update("local", leftFork.getForkName(), leftFork);
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
42 ods.update("local", rightFork.getForkName(), rightFork);
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
43 }
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
44 }