changeset 202:d0d1e5a9c39d

add PrefixTree
author ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
date Sun, 10 Mar 2019 22:55:21 +0900
parents d15467cd08cc
children 720f7014d871
files src/test/java/christie/example/PrefixTree/Calculate.java src/test/java/christie/example/PrefixTree/Child.java src/test/java/christie/example/PrefixTree/CountCalculate.java src/test/java/christie/example/PrefixTree/CountMessage.java src/test/java/christie/example/PrefixTree/RelayStart.java src/test/java/christie/example/PrefixTree/sendOrDisplay.java
diffstat 6 files changed, 71 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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);
+        }
     }
 }
--- 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());
     }
 
 
--- /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());
+    }
+}
--- 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);
--- /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());
+    }
+}
--- 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);