Mercurial > hg > Database > Christie
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(); + } + } + +}