diff src/main/java/christie/topology/manager/IncomingHosts.java @ 170:f9f83bb213e8

fix topology manager
author akahori
date Tue, 22 Jan 2019 18:32:39 +0900
parents c7300be0fff6
children 6eb548c188e5
line wrap: on
line diff
--- a/src/main/java/christie/topology/manager/IncomingHosts.java	Tue Jan 22 18:32:13 2019 +0900
+++ b/src/main/java/christie/topology/manager/IncomingHosts.java	Tue Jan 22 18:32:39 2019 +0900
@@ -25,6 +25,9 @@
     @Take
     String MD5;
 
+    @Take
+    HashMap<String, LinkedList<HostMessage>> topology;
+
     @Peek
     TopologyDataGear topoDG;
 
@@ -46,23 +49,49 @@
         absCookieTable.put(MD5, nodeName);
         getLocalDGM().put("absCookieTable", absCookieTable);
 
-        topoDG.setNodeName(nodeName);
-        getDGM(nodeName).put( "topoDG", topoDG);
+
         getDGM(nodeName).put("cookie", MD5);
 
         LinkedList<HostMessage> nodeInfoList = resultParse.get(nodeName);
+        put(nodeName, "connectNodeNum", nodeInfoList.size());
+        if(nodeInfoList.size() == 0) put(nodeName,"reverseNodeName", "");
+
         for (HostMessage nodeInfo : nodeInfoList) {
 
+
             nodeInfo.setHostAndPort(newHost);
 
-            getLocalDGM().put("nodeInfo", nodeInfo);
-            getDGM(nodeName).put("remoteNodeInfo", nodeInfo);
-            cgm.setup(new RecordTopology());
+            //getLocalDGM().put("nodeInfo", nodeInfo);
+
+            //getDGM(nodeName).put("remoteNodeInfo", nodeInfo);
+            //cgm.setup(new RecordTopology());
+
+            String nodeInfoNodeName = nodeInfo.getNodeName();
+            LinkedList<HostMessage> connections;
+
+            if (!topology.containsKey(nodeInfoNodeName)) {
+                connections = new LinkedList<HostMessage>();
+            } else {
+                connections = topology.get(nodeInfoNodeName);
+            }
+            connections.add(nodeInfo);
+            topology.put(nodeInfoNodeName, connections);
         }
 
+        getLocalDGM().put("topology", topology);
+
+
         if (nodeNames.isEmpty()) {
             // configuration finish
             for (String key : resultParse.keySet()) {
+                topoDG.setNodeName(key);
+                getDGM(key).put("topoDG", topoDG);
+                if(topology.containsKey(key)){
+                    LinkedList<HostMessage> connections = topology.get(key);
+                    for(HostMessage connection: connections) {
+                        put(key, "remoteNodeInfo", connection);
+                    }
+                }
                 put(key, "remoteNodeInfo", new HostMessage()); // end mark
             }
         }