# HG changeset patch # User ichikitakahiro # Date 1552226121 -32400 # Node ID d0d1e5a9c39d1e8c9efabd7e04e5add32c071d40 # Parent d15467cd08cc09b23ed78d951d3bc2be6832d74f add PrefixTree diff -r d15467cd08cc -r d0d1e5a9c39d src/test/java/christie/example/PrefixTree/Calculate.java --- a/src/test/java/christie/example/PrefixTree/Calculate.java Mon Feb 25 20:44:55 2019 +0900 +++ b/src/test/java/christie/example/PrefixTree/Calculate.java Sun Mar 10 22:55:21 2019 +0900 @@ -12,10 +12,22 @@ @Take int num; + @Take + int count; + + @Peek + int childNodeNum; + @Override protected void run(CodeGearManager cgm) { num = num + pushedNum; + count ++; put("num", num); - + if(count >= childNodeNum){ + cgm.setup(new sendOrDisplay()); + }else{ + cgm.setup(new Calculate()); + put("count", count); + } } } diff -r d15467cd08cc -r d0d1e5a9c39d src/test/java/christie/example/PrefixTree/Child.java --- a/src/test/java/christie/example/PrefixTree/Child.java Mon Feb 25 20:44:55 2019 +0900 +++ b/src/test/java/christie/example/PrefixTree/Child.java Sun Mar 10 22:55:21 2019 +0900 @@ -14,6 +14,7 @@ protected void run(CodeGearManager cgm) { put("parent", "ack", new Message()); cgm.setup(new ReceiveMessage()); + cgm.setup(new RelayStart()); } diff -r d15467cd08cc -r d0d1e5a9c39d src/test/java/christie/example/PrefixTree/CountCalculate.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/test/java/christie/example/PrefixTree/CountCalculate.java Sun Mar 10 22:55:21 2019 +0900 @@ -0,0 +1,24 @@ +package christie.example.PrefixTree; + +import christie.annotation.Peek; +import christie.annotation.Take; +import christie.codegear.CodeGear; +import christie.codegear.CodeGearManager; +import christie.topology.Message; +import christie.topology.TopologyDataGear; + +public class CountCalculate extends CodeGear { + @Peek + TopologyDataGear topoDG; + + @Override + protected void run(CodeGearManager cgm) { + int childNum = topoDG.getConnectionList().size(); + if (childNum == 0) { + put("pushedNum", 0); + } + put("count", 0); + put("childNodeNum", childNum); + cgm.setup(new Calculate()); + } +} diff -r d15467cd08cc -r d0d1e5a9c39d src/test/java/christie/example/PrefixTree/CountMessage.java --- a/src/test/java/christie/example/PrefixTree/CountMessage.java Mon Feb 25 20:44:55 2019 +0900 +++ b/src/test/java/christie/example/PrefixTree/CountMessage.java Sun Mar 10 22:55:21 2019 +0900 @@ -25,10 +25,12 @@ count ++; if(count == totalNodeNum){ System.out.print("success"); - for(String nodeName : topoDG.getConnectionList()) { + for(String nodeName : topoDG.getConnectionList()) { put(nodeName, "start", new Message()); + System.out.println(nodeName); } - cgm.setup(new Calculate()); + + cgm.setup(new CountCalculate()); }else{ cgm.setup(new CountMessage()); put("count",count); diff -r d15467cd08cc -r d0d1e5a9c39d src/test/java/christie/example/PrefixTree/RelayStart.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/test/java/christie/example/PrefixTree/RelayStart.java Sun Mar 10 22:55:21 2019 +0900 @@ -0,0 +1,28 @@ +package christie.example.PrefixTree; + +import christie.annotation.Peek; +import christie.annotation.Take; +import christie.codegear.CodeGear; +import christie.codegear.CodeGearManager; +import christie.topology.Message; +import christie.topology.TopologyDataGear; + +import java.util.regex.Pattern; + +public class RelayStart extends CodeGear { + @Take + Message start; + + @Peek + TopologyDataGear topoDG; + + @Override + protected void run(CodeGearManager cgm) { + for(String nodeName : topoDG.getConnectionList()) { + if(nodeName.matches("child" + ".*")) { + put(nodeName, "start", new Message()); + } + } + cgm.setup(new CountCalculate()); + } +} diff -r d15467cd08cc -r d0d1e5a9c39d src/test/java/christie/example/PrefixTree/sendOrDisplay.java --- a/src/test/java/christie/example/PrefixTree/sendOrDisplay.java Mon Feb 25 20:44:55 2019 +0900 +++ b/src/test/java/christie/example/PrefixTree/sendOrDisplay.java Sun Mar 10 22:55:21 2019 +0900 @@ -15,7 +15,7 @@ @Override protected void run(CodeGearManager cgm) { - if(topoDG.getConnectionList().contains("parent")){ + if(topoDG.getConnectionList().contains("parent")){ put("parent", "pushedNum", num); }else{ System.out.println("total:" + num);