diff src/main/java/christie/topology/manager/SearchHostName.java.orig @ 143:443bf8351933

add FizzBuzz
author ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
date Fri, 04 Jan 2019 04:18:36 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/christie/topology/manager/SearchHostName.java.orig	Fri Jan 04 04:18:36 2019 +0900
@@ -0,0 +1,94 @@
+package christie.topology.manager;
+
+
+import christie.annotation.Peek;
+import christie.annotation.Take;
+import christie.codegear.CodeGear;
+import christie.codegear.CodeGearManager;
+import christie.topology.HostMessage;
+//import org.msgpack.type.ValueFactory;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+
+public class SearchHostName extends CodeGear {
+
+    @Take // reconnect NodeInfo
+    HostMessage reconnectHost;
+
+    @Peek
+    HashMap<String, LinkedList<HostMessage>> topology;
+
+    @Peek
+    boolean running;
+
+
+    public SearchHostName(){
+
+    }
+
+    @Override
+    protected void run(CodeGearManager cgm) {
+
+
+        // Question: remove処理 どうしようか. いらない気もする.
+        // DataSegment.remove(hostInfo.absName);
+
+        String nodeName = reconnectHost.getNodeName();
+        String hostName = reconnectHost.getHostName();
+        int port = reconnectHost.getPort();
+
+        cgm.createRemoteDGM(nodeName, hostName, port);
+        getDGM(nodeName).put("nodeName", nodeName);
+
+        // put Host dataSegment on reconnect node
+        if (topology.containsKey(nodeName)) {
+
+            // Question: これはバグ...?
+            // ods.put(reconnectHost.absName, "dummy"); // this is bug
+
+            if (running){
+                getLocalDGM().put(nodeName, "");
+            }
+
+
+
+            LinkedList<HostMessage> hostList = topology.get(nodeName);
+            for (HostMessage host : hostList){
+                getLocalDGM().put(nodeName, host);
+                System.out.println("put data in "+ nodeName);
+            }
+        }
+
+        // update topology information
+        for (LinkedList<HostMessage> list :topology.values()){
+            for (HostMessage host : list){
+
+                // find and update old info
+                if (!nodeName.equals(host.getNodeName())) continue;
+
+                if (!hostName.equals(host.getHostName()) || port != host.getPort()){
+                    host.setHostAndPort(hostName, port);
+
+                    getLocalDGM().put(host.getNodeName(), host);
+
+                } else {
+                    // nothing to do ?
+                }
+            }
+        }
+
+        for (LinkedList<HostMessage> list :topology.values()){
+            System.out.print(list.get(0).getRemoteNodeName()+" : ");
+            for (HostMessage host : list){
+                System.out.print("[ "+host.getNodeName()      +" "
+                                     +host.getHostName()      +" "
+                                     +host.getPort()          +" "
+                                     +host.getConnectionName()+" "
+                                     +host.getRemoteNodeName()+" ]");
+            }
+            System.out.println();
+        }
+    }
+
+}