Mercurial > hg > Database > Christie
view src/main/java/christie/topology/manager/SearchHostName.java @ 83:2314c55534ef
add TreeTopology
author | akahori |
---|---|
date | Sat, 15 Sep 2018 09:24:36 +0900 |
parents | f884c1bd0d36 |
children | 7abfe041b75c |
line wrap: on
line source
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); cgm.createRemoteDGM(reconnectHost.nodeName, reconnectHost.hostName, reconnectHost.port); getDGM(reconnectHost.nodeName).put("host", reconnectHost.nodeName); // put Host dataSegment on reconnect node if (topology.containsKey(reconnectHost.nodeName)) { // Question: これはバグ...? // ods.put(reconnectHost.absName, "dummy"); // this is bug if (running){ getLocalDGM().put(reconnectHost.nodeName, ValueFactory.createNilValue()); } LinkedList<HostMessage> hostList = topology.get(reconnectHost.nodeName); for (HostMessage host : hostList){ getLocalDGM().put(reconnectHost.nodeName, host); System.out.println("put data in "+ reconnectHost.nodeName); } } // update topology information for (LinkedList<HostMessage> list :topology.values()){ for (HostMessage host : list){ // find and update old info if (!reconnectHost.nodeName.equals(host.nodeName)) continue; if (!reconnectHost.hostName.equals(host.hostName) || reconnectHost.port != host.port){ host.hostName = reconnectHost.hostName; host.port = reconnectHost.port; getLocalDGM().put(host.remoteNodeName, host); } else { // nothing to do ? } } } for (LinkedList<HostMessage> list :topology.values()){ System.out.print(list.get(0).remoteNodeName+" : "); for (HostMessage host : list){ System.out.print("[ "+host.nodeName+" "+host.hostName+" "+host.port+" "+host.connectionName+" "+host.reverseName+" "+host.remoteNodeName+" ]"); } System.out.println(); } } }