Mercurial > hg > Database > Alice
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 } |