comparison src/main/java/alice/topology/manager/SearchHostName.java @ 432:59e84cd75403 dispose

SearchHostName has bug
author sugi
date Mon, 04 Aug 2014 20:34:41 +0900
parents 1b32ea1263f3
children e565d481c52e
comparison
equal deleted inserted replaced
431:0239c1633012 432:59e84cd75403
1 package alice.topology.manager; 1 package alice.topology.manager;
2 2
3 import java.util.HashMap; 3 import java.util.HashMap;
4 import java.util.LinkedList; 4 import java.util.LinkedList;
5
6 import org.msgpack.type.ValueFactory;
5 7
6 import alice.codesegment.CodeSegment; 8 import alice.codesegment.CodeSegment;
7 import alice.datasegment.CommandType; 9 import alice.datasegment.CommandType;
8 import alice.datasegment.DataSegment; 10 import alice.datasegment.DataSegment;
9 import alice.datasegment.Receiver; 11 import alice.datasegment.Receiver;
11 13
12 public class SearchHostName extends CodeSegment { 14 public class SearchHostName extends CodeSegment {
13 15
14 private Receiver info = ids.create(CommandType.TAKE); // reconnect NodeInfo 16 private Receiver info = ids.create(CommandType.TAKE); // reconnect NodeInfo
15 private Receiver info1 = ids.create(CommandType.TAKE); // topology recode (HashMap) 17 private Receiver info1 = ids.create(CommandType.TAKE); // topology recode (HashMap)
18 private Receiver info2 = ids.create(CommandType.PEEK); // check App running
16 19
17 public SearchHostName(){ 20 public SearchHostName(){
18 info.setKey("reconnect"); 21 info.setKey("reconnect");
19 info1.setKey("topology"); 22 info1.setKey("topology");
23 info2.setKey("running");
20 } 24 }
21 25
22 @Override 26 @Override
23 public void run() { 27 public void run() {
24 HostMessage hostInfo = info.asClass(HostMessage.class); 28 HostMessage hostInfo = info.asClass(HostMessage.class);
29 boolean running = info2.asClass(boolean.class);
25 @SuppressWarnings("unchecked") 30 @SuppressWarnings("unchecked")
26 HashMap<String, LinkedList<HostMessage>> topology = info1.asClass(HashMap.class); 31 HashMap<String, LinkedList<HostMessage>> topology = info1.asClass(HashMap.class);
27 32
28 DataSegment.remove(hostInfo.absName); 33 DataSegment.remove(hostInfo.absName);
29 DataSegment.connect(hostInfo.absName, "", hostInfo.name, hostInfo.port); 34 DataSegment.connect(hostInfo.absName, "", hostInfo.name, hostInfo.port);
30 ods.put(hostInfo.absName, "host", hostInfo.absName); 35 ods.put(hostInfo.absName, "host", hostInfo.absName);
31 36
32 // put Host dataSegment on reconnect node 37 // put Host dataSegment on reconnect node
33 if (topology.containsKey(hostInfo.absName)) { 38 if (topology.containsKey(hostInfo.absName)) {
34 LinkedList<HostMessage> clist = topology.get(hostInfo.absName); 39 LinkedList<HostMessage> clist = topology.get(hostInfo.absName);
35 for (HostMessage node : clist) 40 ods.put(hostInfo.absName, "dummy");
36 ods.put(hostInfo.absName, node); 41 if (running){
37 42 ods.put(hostInfo.absName, ValueFactory.createNilValue());
43 }
44 for (HostMessage node : clist){
45 ods.put("local" ,hostInfo.absName, node);
46 System.out.println("put data in "+ hostInfo.absName);
47 }
38 } 48 }
39 49
40 // update topology information 50 // update topology information
41 for (LinkedList<HostMessage> list :topology.values()){ 51 for (LinkedList<HostMessage> list :topology.values()){
42 for (HostMessage host : list){ 52 for (HostMessage host : list){
43 53
44 // find and update old info 54 // find and update old info
45 if (hostInfo.absName.equals(host.absName)){ 55 if (hostInfo.absName.equals(host.absName)){
46 if (!hostInfo.name.equals(host.name) || (hostInfo.port != host.port)){ 56 if (!hostInfo.name.equals(host.name) || (hostInfo.port != host.port)){
47 list.remove(host); 57 host.name = hostInfo.name;
48 HostMessage newHost = new HostMessage(hostInfo.name, hostInfo.port, host.connectionName, host.reverseName); 58 host.port = hostInfo.port;
49 newHost.absName = host.absName; 59
50 newHost.remoteAbsName = host.remoteAbsName; 60 ods.put(host.remoteAbsName, host);
51 61
52 ods.put(host.remoteAbsName, newHost);
53 list.add(newHost);
54 } else { 62 } else {
55 // nothing to do ? 63 // nothing to do ?
56 } 64 }
57 } 65 }
58 } 66 }