# HG changeset patch # User one # Date 1355066561 -32400 # Node ID da62aa1f4d87810693e4753c9078bf7aeec6de83 # Parent fd370b35fac1b8f887c77fb551a793df3ef41590 hg rename codesegment package diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/DPPTestAlice.java --- a/src/alice/test/dpp/codesegment/DPPTestAlice.java Mon Dec 10 00:19:27 2012 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,9 +0,0 @@ -package alice.test.dpp.codesegment; - -public class DPPTestAlice { - - public static void main(String[] args) { - System.out.println("Start DPPTestAlice"); - new StartCodeSegment().execute(); - } -} diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/EatCodeSegment.java --- a/src/alice/test/dpp/codesegment/EatCodeSegment.java Mon Dec 10 00:19:27 2012 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -package alice.test.dpp.codesegment; - -import alice.codesegment.CodeSegment; -import alice.datasegment.CommandType; -import alice.datasegment.Receiver; -import alice.test.dpp.datasegment.Philosophy; - -public class EatCodeSegment extends CodeSegment { - - Receiver arg1 = ids.create(CommandType.TAKE); - - public EatCodeSegment(String pName) { - arg1.setKey(pName); - } - - @Override - public void run() { - Philosophy phil = arg1.asClass(Philosophy.class); - System.out.println(phil.getName() + " is eating."); - phil.setState(Philosophy.State.PUTRIGHTFORK); - new PutRightForkCodeSegment(phil.getName(), phil.getRightFork()); - ods.update("local", phil.getName(), phil); - } -} diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/PutForkCodeSegment.java --- a/src/alice/test/dpp/codesegment/PutForkCodeSegment.java Mon Dec 10 00:19:27 2012 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -package alice.test.dpp.codesegment; - -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 PutForkCodeSegment extends CodeSegment { - /* - * Unuse CodeSegment - */ - Receiver arg1 = ids.create(CommandType.TAKE); - Receiver arg2 = ids.create(CommandType.TAKE); - Receiver arg3 = ids.create(CommandType.TAKE); - - public PutForkCodeSegment(String pName, String rFork, String lFork) { - arg1.setKey(pName); - arg2.setKey(lFork); - arg3.setKey(rFork); - } - - @Override - public void run() { - Philosophy phil = arg1.asClass(Philosophy.class); - Fork leftFork = arg2.asClass(Fork.class); - Fork rightFork = arg3.asClass(Fork.class); - System.out.println(phil.getName() +" put fork."); - leftFork.onTheTable(phil.getName()); - rightFork.onTheTable(phil.getName()); - phil.setState(Philosophy.State.THINK); - new ThinkCodeSegment(phil.getName()); - ods.update("local", phil.getName(), phil); - ods.update("local", leftFork.getForkName(), leftFork); - ods.update("local", rightFork.getForkName(), rightFork); - } - -} diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/PutLeftForkCodeSegment.java --- a/src/alice/test/dpp/codesegment/PutLeftForkCodeSegment.java Mon Dec 10 00:19:27 2012 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -package alice.test.dpp.codesegment; - -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 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 fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/PutRightForkCodeSegment.java --- a/src/alice/test/dpp/codesegment/PutRightForkCodeSegment.java Mon Dec 10 00:19:27 2012 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -package alice.test.dpp.codesegment; -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 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 fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/ScheduleCodeSegment.java --- a/src/alice/test/dpp/codesegment/ScheduleCodeSegment.java Mon Dec 10 00:19:27 2012 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -package alice.test.dpp.codesegment; - -import alice.codesegment.CodeSegment; -import alice.datasegment.CommandType; -import alice.datasegment.Receiver; -import alice.test.dpp.datasegment.Philosophy; - -public class ScheduleCodeSegment extends CodeSegment { - /* - * This CodeSegment is unuse CodeSegment. - */ - Receiver arg1 = ids.create(CommandType.TAKE); - - public ScheduleCodeSegment(String pName) { - arg1.setKey(pName); - } - - @Override - public void run() { - Philosophy phil = arg1.asClass(Philosophy.class); - switch(phil.getState()) { - case THINK: - new ThinkCodeSegment(phil.getName()); - break; - case TAKERIGHTFORK: - new TakeRightForkCodeSegment(phil.getName(), phil.getRightFork()); - break; - case TAKELEFTFORK: - new TakeRightForkCodeSegment(phil.getName(), phil.getLeftFork()); - break; -/* - case TAKEFORK: - new TakeForkCodeSegment(phil.getName(), phil.getRightFork(), phil.getLeftFork() ); - break; -*/ - case EAT: - new EatCodeSegment(phil.getName()); - break; - case PUTFORK: - new PutForkCodeSegment(phil.getName(), phil.getRightFork(), phil.getLeftFork()); - break; - default: - - } - ods.update("local", phil.getName(), phil); - } - -} diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/StartCodeSegment.java --- a/src/alice/test/dpp/codesegment/StartCodeSegment.java Mon Dec 10 00:19:27 2012 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -package alice.test.dpp.codesegment; - -import alice.codesegment.CodeSegment; -import alice.test.dpp.datasegment.Fork; -import alice.test.dpp.datasegment.Philosophy; - -public class StartCodeSegment extends CodeSegment { - - @Override - public void run() { - System.out.println("run StartCodeSegment"); - - new ScheduleCodeSegment("phil1"); - new ScheduleCodeSegment("phil2"); - new ScheduleCodeSegment("phil3"); - - ods.update("local", "phil1", new Philosophy("phil1","fork1","fork2")); - ods.update("local", "phil2", new Philosophy("phil2","fork2","fork3")); - ods.update("local", "phil3", new Philosophy("phil3","fork3","fork1")); - ods.update("local", "fork1", new Fork("fork1")); - ods.update("local", "fork2", new Fork("fork2")); - ods.update("local", "fork3", new Fork("fork3")); - - } - -} diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/TakeForkCodeSegment.java --- a/src/alice/test/dpp/codesegment/TakeForkCodeSegment.java Mon Dec 10 00:19:27 2012 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -package alice.test.dpp.codesegment; - -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 { - - /* - * Unuse 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."); - - if (leftFork.getFork(phil.getName()) && rightFork.getFork(phil.getName()) ) { - phil.setState(Philosophy.State.EAT); - } else { - leftFork.onTheTable(phil.getName()); - rightFork.onTheTable(phil.getName()); - } - - new ScheduleCodeSegment(phil.getName()); - ods.update("local", phil.getName(), phil); - ods.update("local", leftFork.getForkName(), leftFork); - ods.update("local", rightFork.getForkName(), rightFork); - } -} diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/TakeLeftForkCodeSegment.java --- a/src/alice/test/dpp/codesegment/TakeLeftForkCodeSegment.java Mon Dec 10 00:19:27 2012 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -package alice.test.dpp.codesegment; - -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 TakeLeftForkCodeSegment extends CodeSegment { - - Receiver arg1 = ids.create(CommandType.TAKE); - Receiver arg2 = ids.create(CommandType.TAKE); - - public TakeLeftForkCodeSegment(String pName, String forkName) { - arg1.setKey(pName); - arg2.setKey(forkName); - } - - @Override - 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()); - } else { - new TakeLeftForkCodeSegment(phil.getName(), phil.getLeftFork()); - } - ods.update("local", phil.getName(), phil); - ods.update("local", fork.getForkName(), fork); - } -} diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/TakeRightForkCodeSegment.java --- a/src/alice/test/dpp/codesegment/TakeRightForkCodeSegment.java Mon Dec 10 00:19:27 2012 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -package alice.test.dpp.codesegment; - -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 TakeRightForkCodeSegment extends CodeSegment { - - Receiver arg1 = ids.create(CommandType.TAKE); - Receiver arg2 = ids.create(CommandType.TAKE); - - public TakeRightForkCodeSegment(String pName, String forkName) { - arg1.setKey(pName); - arg2.setKey(forkName); - } - - @Override - public void run() { - Philosophy phil = arg1.asClass(Philosophy.class); - Fork fork = arg2.asClass(Fork.class); - if (fork.getFork(phil.getName())) { - phil.setState(Philosophy.State.TAKELEFTFORK); - new TakeLeftForkCodeSegment(phil.getName(), phil.getLeftFork()); - } else { - new TakeRightForkCodeSegment(phil.getName(), phil.getRightFork()); - } - ods.update("local", phil.getName(), phil); - ods.update("local", fork.getForkName(), fork); - } -} diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/ThinkCodeSegment.java --- a/src/alice/test/dpp/codesegment/ThinkCodeSegment.java Mon Dec 10 00:19:27 2012 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -package alice.test.dpp.codesegment; - -import alice.codesegment.CodeSegment; -import alice.datasegment.CommandType; -import alice.datasegment.Receiver; -import alice.test.dpp.datasegment.Philosophy; - -public class ThinkCodeSegment extends CodeSegment { - - Receiver arg1 = ids.create(CommandType.TAKE); - - public ThinkCodeSegment(String pName) { - arg1.setKey(pName); - } - - @Override - public void run() { - Philosophy phil = arg1.asClass(Philosophy.class); - System.out.println(phil.getName() + " is thinking"); - phil.setState(Philosophy.State.TAKERIGHTFORK); - new TakeRightForkCodeSegment(phil.getName(), phil.getRightFork()); - ods.update("local", phil.getName(), phil); - } - -} diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/philosophy/DPPTestAlice.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/test/dpp/codesegment/philosophy/DPPTestAlice.java Mon Dec 10 00:22:41 2012 +0900 @@ -0,0 +1,9 @@ +package alice.test.dpp.codesegment.philosophy; + +public class DPPTestAlice { + + public static void main(String[] args) { + System.out.println("Start DPPTestAlice"); + new StartCodeSegment().execute(); + } +} diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/philosophy/EatCodeSegment.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/test/dpp/codesegment/philosophy/EatCodeSegment.java Mon Dec 10 00:22:41 2012 +0900 @@ -0,0 +1,24 @@ +package alice.test.dpp.codesegment.philosophy; + +import alice.codesegment.CodeSegment; +import alice.datasegment.CommandType; +import alice.datasegment.Receiver; +import alice.test.dpp.datasegment.Philosophy; + +public class EatCodeSegment extends CodeSegment { + + Receiver arg1 = ids.create(CommandType.TAKE); + + public EatCodeSegment(String pName) { + arg1.setKey(pName); + } + + @Override + public void run() { + Philosophy phil = arg1.asClass(Philosophy.class); + System.out.println(phil.getName() + " is eating."); + phil.setState(Philosophy.State.PUTRIGHTFORK); + new PutRightForkCodeSegment(phil.getName(), phil.getRightFork()); + ods.update("local", phil.getName(), phil); + } +} diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/philosophy/PutForkCodeSegment.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/test/dpp/codesegment/philosophy/PutForkCodeSegment.java Mon Dec 10 00:22:41 2012 +0900 @@ -0,0 +1,38 @@ +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 PutForkCodeSegment extends CodeSegment { + /* + * Unuse CodeSegment + */ + Receiver arg1 = ids.create(CommandType.TAKE); + Receiver arg2 = ids.create(CommandType.TAKE); + Receiver arg3 = ids.create(CommandType.TAKE); + + public PutForkCodeSegment(String pName, String rFork, String lFork) { + arg1.setKey(pName); + arg2.setKey(lFork); + arg3.setKey(rFork); + } + + @Override + public void run() { + Philosophy phil = arg1.asClass(Philosophy.class); + Fork leftFork = arg2.asClass(Fork.class); + Fork rightFork = arg3.asClass(Fork.class); + System.out.println(phil.getName() +" put fork."); + leftFork.onTheTable(phil.getName()); + rightFork.onTheTable(phil.getName()); + phil.setState(Philosophy.State.THINK); + new ThinkCodeSegment(phil.getName()); + ods.update("local", phil.getName(), phil); + ods.update("local", leftFork.getForkName(), leftFork); + ods.update("local", rightFork.getForkName(), rightFork); + } + +} diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/philosophy/PutLeftForkCodeSegment.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/test/dpp/codesegment/philosophy/PutLeftForkCodeSegment.java Mon Dec 10 00:22:41 2012 +0900 @@ -0,0 +1,30 @@ +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 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 fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/philosophy/PutRightForkCodeSegment.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/test/dpp/codesegment/philosophy/PutRightForkCodeSegment.java Mon Dec 10 00:22:41 2012 +0900 @@ -0,0 +1,30 @@ +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 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 fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/philosophy/ScheduleCodeSegment.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/test/dpp/codesegment/philosophy/ScheduleCodeSegment.java Mon Dec 10 00:22:41 2012 +0900 @@ -0,0 +1,48 @@ +package alice.test.dpp.codesegment.philosophy; + +import alice.codesegment.CodeSegment; +import alice.datasegment.CommandType; +import alice.datasegment.Receiver; +import alice.test.dpp.datasegment.Philosophy; + +public class ScheduleCodeSegment extends CodeSegment { + /* + * This CodeSegment is unuse CodeSegment. + */ + Receiver arg1 = ids.create(CommandType.TAKE); + + public ScheduleCodeSegment(String pName) { + arg1.setKey(pName); + } + + @Override + public void run() { + Philosophy phil = arg1.asClass(Philosophy.class); + switch(phil.getState()) { + case THINK: + new ThinkCodeSegment(phil.getName()); + break; + case TAKERIGHTFORK: + new TakeRightForkCodeSegment(phil.getName(), phil.getRightFork()); + break; + case TAKELEFTFORK: + new TakeRightForkCodeSegment(phil.getName(), phil.getLeftFork()); + break; +/* + case TAKEFORK: + new TakeForkCodeSegment(phil.getName(), phil.getRightFork(), phil.getLeftFork() ); + break; +*/ + case EAT: + new EatCodeSegment(phil.getName()); + break; + case PUTFORK: + new PutForkCodeSegment(phil.getName(), phil.getRightFork(), phil.getLeftFork()); + break; + default: + + } + ods.update("local", phil.getName(), phil); + } + +} diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/philosophy/StartCodeSegment.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/test/dpp/codesegment/philosophy/StartCodeSegment.java Mon Dec 10 00:22:41 2012 +0900 @@ -0,0 +1,26 @@ +package alice.test.dpp.codesegment.philosophy; + +import alice.codesegment.CodeSegment; +import alice.test.dpp.datasegment.Fork; +import alice.test.dpp.datasegment.Philosophy; + +public class StartCodeSegment extends CodeSegment { + + @Override + public void run() { + System.out.println("run StartCodeSegment"); + + new ScheduleCodeSegment("phil1"); + new ScheduleCodeSegment("phil2"); + new ScheduleCodeSegment("phil3"); + + ods.update("local", "phil1", new Philosophy("phil1","fork1","fork2")); + ods.update("local", "phil2", new Philosophy("phil2","fork2","fork3")); + ods.update("local", "phil3", new Philosophy("phil3","fork3","fork1")); + ods.update("local", "fork1", new Fork("fork1")); + ods.update("local", "fork2", new Fork("fork2")); + ods.update("local", "fork3", new Fork("fork3")); + + } + +} diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/philosophy/TakeForkCodeSegment.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/test/dpp/codesegment/philosophy/TakeForkCodeSegment.java Mon Dec 10 00:22:41 2012 +0900 @@ -0,0 +1,44 @@ +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 { + + /* + * Unuse 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."); + + if (leftFork.getFork(phil.getName()) && rightFork.getFork(phil.getName()) ) { + phil.setState(Philosophy.State.EAT); + } else { + leftFork.onTheTable(phil.getName()); + rightFork.onTheTable(phil.getName()); + } + + new ScheduleCodeSegment(phil.getName()); + ods.update("local", phil.getName(), phil); + ods.update("local", leftFork.getForkName(), leftFork); + ods.update("local", rightFork.getForkName(), rightFork); + } +} diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/philosophy/TakeLeftForkCodeSegment.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/test/dpp/codesegment/philosophy/TakeLeftForkCodeSegment.java Mon Dec 10 00:22:41 2012 +0900 @@ -0,0 +1,33 @@ +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 TakeLeftForkCodeSegment extends CodeSegment { + + Receiver arg1 = ids.create(CommandType.TAKE); + Receiver arg2 = ids.create(CommandType.TAKE); + + public TakeLeftForkCodeSegment(String pName, String forkName) { + arg1.setKey(pName); + arg2.setKey(forkName); + } + + @Override + 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()); + } else { + new TakeLeftForkCodeSegment(phil.getName(), phil.getLeftFork()); + } + ods.update("local", phil.getName(), phil); + ods.update("local", fork.getForkName(), fork); + } +} diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/philosophy/TakeRightForkCodeSegment.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/test/dpp/codesegment/philosophy/TakeRightForkCodeSegment.java Mon Dec 10 00:22:41 2012 +0900 @@ -0,0 +1,32 @@ +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 TakeRightForkCodeSegment extends CodeSegment { + + Receiver arg1 = ids.create(CommandType.TAKE); + Receiver arg2 = ids.create(CommandType.TAKE); + + public TakeRightForkCodeSegment(String pName, String forkName) { + arg1.setKey(pName); + arg2.setKey(forkName); + } + + @Override + public void run() { + Philosophy phil = arg1.asClass(Philosophy.class); + Fork fork = arg2.asClass(Fork.class); + if (fork.getFork(phil.getName())) { + phil.setState(Philosophy.State.TAKELEFTFORK); + new TakeLeftForkCodeSegment(phil.getName(), phil.getLeftFork()); + } else { + new TakeRightForkCodeSegment(phil.getName(), phil.getRightFork()); + } + ods.update("local", phil.getName(), phil); + ods.update("local", fork.getForkName(), fork); + } +} diff -r fd370b35fac1 -r da62aa1f4d87 src/alice/test/dpp/codesegment/philosophy/ThinkCodeSegment.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/test/dpp/codesegment/philosophy/ThinkCodeSegment.java Mon Dec 10 00:22:41 2012 +0900 @@ -0,0 +1,25 @@ +package alice.test.dpp.codesegment.philosophy; + +import alice.codesegment.CodeSegment; +import alice.datasegment.CommandType; +import alice.datasegment.Receiver; +import alice.test.dpp.datasegment.Philosophy; + +public class ThinkCodeSegment extends CodeSegment { + + Receiver arg1 = ids.create(CommandType.TAKE); + + public ThinkCodeSegment(String pName) { + arg1.setKey(pName); + } + + @Override + public void run() { + Philosophy phil = arg1.asClass(Philosophy.class); + System.out.println(phil.getName() + " is thinking"); + phil.setState(Philosophy.State.TAKERIGHTFORK); + new TakeRightForkCodeSegment(phil.getName(), phil.getRightFork()); + ods.update("local", phil.getName(), phil); + } + +}