changeset 199:cdf604af6c12

add Prefix Tree
author ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
date Sat, 23 Feb 2019 04:52:32 +0900
parents 7e97f59a13fa
children 60afc98ce6a4
files src/test/java/christie/example/PrefixTree/ChildCodeGear.java src/test/java/christie/example/PrefixTree/ParentCodeGear.java src/test/java/christie/example/PrefixTree/StartPrefixTree.java
diffstat 3 files changed, 98 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/christie/example/PrefixTree/ChildCodeGear.java	Sat Feb 23 04:52:32 2019 +0900
@@ -0,0 +1,27 @@
+package christie.example.PrefixTree;
+
+import christie.annotation.Peek;
+import christie.codegear.CodeGear;
+import christie.codegear.CodeGearManager;
+import christie.topology.TopologyDataGear;
+
+import java.util.List;
+
+public class ChildCodeGear  extends CodeGear {
+
+    @Peek
+    TopologyDataGear topoDG;
+
+    @Override
+    protected void run(CodeGearManager cgm) {
+        List<String> _CLIST = topoDG.getConnectionList();
+        if(_CLIST.contains("parent")) {
+            getDGM("parent").put("childNodeName", topoDG.getNodeName());
+            //Conectionの中に"parent"があったらparentに自身のNodenameをputする。
+        }else{
+            getLocalDGM().put("countNodeName", 1);
+            cgm.setup(new ParentCodeGear());
+            //
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/christie/example/PrefixTree/ParentCodeGear.java	Sat Feb 23 04:52:32 2019 +0900
@@ -0,0 +1,34 @@
+package christie.example.PrefixTree;
+
+import christie.annotation.Peek;
+import christie.annotation.Take;
+import christie.codegear.CodeGear;
+import christie.codegear.CodeGearManager;
+import christie.topology.TopologyDataGear;
+import christie.topology.node.TopologyNodeConfig;
+
+public class ParentCodeGear extends CodeGear {
+    @Peek
+    TopologyDataGear topoDG;
+
+    @Peek
+    int maxNodeNum;
+
+    @Peek
+    TopologyNodeConfig topologyNodeConfig;
+
+    @Take
+    int countNodeNum;
+
+    @Take
+    String childNodeName;
+
+    @Override
+    protected void run(CodeGearManager cgm) {
+        System.out.println(topoDG.getNodeName() + " : " + childNodeName + " accept");
+        if(countNodeNum == maxNodeNum){
+            getDGM(topologyNodeConfig.getManagerKey()).put("finish", "");
+            
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/christie/example/PrefixTree/StartPrefixTree.java	Sat Feb 23 04:52:32 2019 +0900
@@ -0,0 +1,37 @@
+package christie.example.PrefixTree;
+
+import christie.codegear.CodeGearManager;
+import christie.codegear.StartCodeGear;
+import christie.topology.manager.StartTopologyManager;
+import christie.topology.manager.TopologyManagerConfig;
+import christie.topology.node.StartTopologyNode;
+import christie.topology.node.TopologyNodeConfig;
+
+public class StartPrefixTree extends StartCodeGear {
+
+    public StartPrefixTree(CodeGearManager cgm) {
+        super(cgm);
+    }
+
+
+    public static void main(String[] args){
+        int topologyManagerPort = 10000;
+        int topologyNodePort = 10001;
+        int nodeNum = 3;
+
+        String[] managerArg = {"--localPort", String.valueOf(topologyManagerPort), "--localPort", "tree"};
+        TopologyManagerConfig topologyManagerConfig = new TopologyManagerConfig(managerArg);
+        new StartTopologyManager(topologyManagerConfig);
+
+        for (int i = 0; i < nodeNum; i++){
+            String[] nodeArg = {
+                    "--managerPort", String.valueOf(topologyNodePort),
+                    "--managerHost", "localhost",
+                    "--localPort", String.valueOf(topologyNodePort + 1)};
+            TopologyNodeConfig cs = new TopologyNodeConfig(nodeArg);
+            new StartTopologyNode(cs, new ChildCodeGear()).put("maxNodeNum",topologyManagerConfig.hasChild);
+        }
+
+
+    }
+}