# HG changeset patch # User one # Date 1355061634 -32400 # Node ID f0a2e2d2094e86ce9e5811bb10b543e3d555ce10 # Parent 92cde627701844a5472a080af8223220dcb2c064 add PutLeftForkCodeSegment, PutRightCodeSegment diff -r 92cde6277018 -r f0a2e2d2094e src/alice/test/dpp/codesegment/EatCodeSegment.java --- a/src/alice/test/dpp/codesegment/EatCodeSegment.java Sun Dec 09 22:37:44 2012 +0900 +++ b/src/alice/test/dpp/codesegment/EatCodeSegment.java Sun Dec 09 23:00:34 2012 +0900 @@ -17,8 +17,8 @@ public void run() { Philosophy phil = arg1.asClass(Philosophy.class); System.out.println(phil.getName() + " is eating."); - phil.setState(Philosophy.State.PUTFORK); - new PutForkCodeSegment(phil.getName(), phil.getRightFork(), phil.getLeftFork()); + phil.setState(Philosophy.State.PUTRIGHTFORK); + new PutRightForkCodeSegment(phil.getName(), phil.getRightFork()); ods.update("local", phil.getName(), phil); } } diff -r 92cde6277018 -r f0a2e2d2094e src/alice/test/dpp/codesegment/PutLeftForkCodeSegment.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/test/dpp/codesegment/PutLeftForkCodeSegment.java Sun Dec 09 23:00:34 2012 +0900 @@ -0,0 +1,30 @@ +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 PutLeftForkCodeSegment extends CodeSegment { + + Receiver arg1 = ids.create(CommandType.TAKE); + Receiver arg2 = ids.create(CommandType.TAKE); + + public PutLeftForkCodeSegment(String pName, String fork) { + arg1.setKey(pName); + arg2.setKey(fork); + } + + @Override + public void run() { + Philosophy phil = arg1.asClass(Philosophy.class); + Fork fork = arg2.asClass(Fork.class); + System.out.println(phil.getName() +" put left fork."); + fork.onTheTable(phil.getName()); + phil.setState(Philosophy.State.THINK); + new ThinkCodeSegment(phil.getName()); + ods.update("local", phil.getName(), phil); + ods.update("local", fork.getForkName(), fork); + } +} diff -r 92cde6277018 -r f0a2e2d2094e src/alice/test/dpp/codesegment/PutRightForkCodeSegment.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/test/dpp/codesegment/PutRightForkCodeSegment.java Sun Dec 09 23:00:34 2012 +0900 @@ -0,0 +1,30 @@ +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 PutRightForkCodeSegment extends CodeSegment { + + Receiver arg1 = ids.create(CommandType.TAKE); + Receiver arg2 = ids.create(CommandType.TAKE); + + public PutRightForkCodeSegment(String pName, String fork) { + arg1.setKey(pName); + arg2.setKey(fork); + } + + @Override + public void run() { + Philosophy phil = arg1.asClass(Philosophy.class); + Fork fork = arg2.asClass(Fork.class); + System.out.println(phil.getName() +" put right fork."); + fork.onTheTable(phil.getName()); + phil.setState(Philosophy.State.PUTLEFTFORK); + new PutLeftForkCodeSegment(phil.getName(), phil.getLeftFork()); + ods.update("local", phil.getName(), phil); + ods.update("local", fork.getForkName(), fork); + } +} diff -r 92cde6277018 -r f0a2e2d2094e src/alice/test/dpp/codesegment/TakeLeftForkCodeSegment.java --- a/src/alice/test/dpp/codesegment/TakeLeftForkCodeSegment.java Sun Dec 09 22:37:44 2012 +0900 +++ b/src/alice/test/dpp/codesegment/TakeLeftForkCodeSegment.java Sun Dec 09 23:00:34 2012 +0900 @@ -20,6 +20,7 @@ public void run() { Philosophy phil = arg1.asClass(Philosophy.class); Fork fork = arg2.asClass(Fork.class); + System.out.println(phil.getName() + " take left fork."); if (fork.getFork(phil.getName())) { phil.setState(Philosophy.State.EAT); new EatCodeSegment(phil.getName()); diff -r 92cde6277018 -r f0a2e2d2094e src/alice/test/dpp/codesegment/TakeRightForkCodeSegment.java --- a/src/alice/test/dpp/codesegment/TakeRightForkCodeSegment.java Sun Dec 09 22:37:44 2012 +0900 +++ b/src/alice/test/dpp/codesegment/TakeRightForkCodeSegment.java Sun Dec 09 23:00:34 2012 +0900 @@ -21,7 +21,7 @@ Philosophy phil = arg1.asClass(Philosophy.class); Fork fork = arg2.asClass(Fork.class); if (fork.getFork(phil.getName())) { - phil.setState(Philosophy.State.TAKERIGHTFORK); + phil.setState(Philosophy.State.TAKELEFTFORK); new TakeLeftForkCodeSegment(phil.getName(), phil.getLeftFork()); } else { new TakeRightForkCodeSegment(phil.getName(), phil.getRightFork()); @@ -29,6 +29,4 @@ ods.update("local", phil.getName(), phil); ods.update("local", fork.getForkName(), fork); } - - } diff -r 92cde6277018 -r f0a2e2d2094e src/alice/test/dpp/codesegment/ThinkCodeSegment.java --- a/src/alice/test/dpp/codesegment/ThinkCodeSegment.java Sun Dec 09 22:37:44 2012 +0900 +++ b/src/alice/test/dpp/codesegment/ThinkCodeSegment.java Sun Dec 09 23:00:34 2012 +0900 @@ -17,7 +17,6 @@ public void run() { Philosophy phil = arg1.asClass(Philosophy.class); System.out.println(phil.getName() + " is thinking"); -// phil.setState(Philosophy.State.TAKEFORK); // dead lock phil.setState(Philosophy.State.TAKERIGHTFORK); new TakeRightForkCodeSegment(phil.getName(), phil.getRightFork()); ods.update("local", phil.getName(), phil); diff -r 92cde6277018 -r f0a2e2d2094e src/alice/test/dpp/model/Philosophy.java --- a/src/alice/test/dpp/model/Philosophy.java Sun Dec 09 22:37:44 2012 +0900 +++ b/src/alice/test/dpp/model/Philosophy.java Sun Dec 09 23:00:34 2012 +0900 @@ -17,7 +17,9 @@ TAKELEFTFORK, TAKEFORK, EAT, - PUTFORK; + PUTFORK, + PUTRIGHTFORK, + PUTLEFTFORK; } private String name, leftFork, rightFork;