annotate src/main/java/alice/topology/manager/IncomingHosts.java @ 428:93995b7a9a05 dispose

change HostMessage field from parentAbsName to remoteAbsName
author sugi
date Tue, 22 Jul 2014 12:56:25 +0900
parents faae3e976cc1
children 1b32ea1263f3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
401
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
1 package alice.topology.manager;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
2
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
3 import java.util.HashMap;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
4 import java.util.LinkedList;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
5
423
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
6 import org.apache.commons.lang3.RandomStringUtils;
401
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
7 import org.msgpack.type.ValueFactory;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
8
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
9 import alice.codesegment.CodeSegment;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
10 import alice.datasegment.CommandType;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
11 import alice.datasegment.DataSegment;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
12 import alice.datasegment.Receiver;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
13 import alice.topology.HostMessage;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
14
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
15 public class IncomingHosts extends CodeSegment {
410
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
16
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
17 HashMap<String, LinkedList<NodeInfo>> topology;
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
18 LinkedList<String> nodeNames;
422
2c6f86320691 add topology state recoder
sugi
parents: 410
diff changeset
19 private Receiver host = ids.create(CommandType.TAKE);
424
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
20 private Receiver nodes = ids.create(CommandType.TAKE);
410
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
21
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
22 public IncomingHosts(HashMap<String, LinkedList<NodeInfo>> topology,
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
23 LinkedList<String> nodeNames) {
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
24 this.topology = topology;
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
25 this.nodeNames = nodeNames;
422
2c6f86320691 add topology state recoder
sugi
parents: 410
diff changeset
26 this.host.setKey("host");
424
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
27 this.nodes.setKey("nodes");
410
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
28 }
401
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
29
410
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
30 @Override
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
31 public void run() {
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
32 HostMessage host = this.host.asClass(HostMessage.class);
424
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
33
423
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
34 // check cookie
424
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
35 if (host.cookie != null) {
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
36 @SuppressWarnings("unchecked")
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
37 LinkedList<HostMessage> nodes = this.nodes.asClass(LinkedList.class);
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
38 for (HostMessage node : nodes) {
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
39 if (host.cookie.equals(node.cookie)) {
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
40 host.absName = node.absName;
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
41 ods.put("reconnect", host);
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
42 ods.put(this.nodes.key, nodes);
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
43 new SearchHostName();
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
44 }
428
93995b7a9a05 change HostMessage field from parentAbsName to remoteAbsName
sugi
parents: 424
diff changeset
45 }
93995b7a9a05 change HostMessage field from parentAbsName to remoteAbsName
sugi
parents: 424
diff changeset
46 } else {
93995b7a9a05 change HostMessage field from parentAbsName to remoteAbsName
sugi
parents: 424
diff changeset
47 System.out.println("cookie is null");
424
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
48 }
423
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
49
424
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
50 // not have or match cookie
410
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
51 String nodeName = nodeNames.poll();
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
52 // Manager connect to Node
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
53 DataSegment.connect(nodeName, "", host.name, host.port);
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
54 ods.put(nodeName, "host", nodeName);
424
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
55
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
56 String cookie = createCookie(nodeName);
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
57 ods.put(nodeName, "cookie", cookie);
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
58
410
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
59 LinkedList<NodeInfo> nodes = topology.get(nodeName);
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
60 for (NodeInfo nodeInfo : nodes) {
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
61 HostMessage newHost = new HostMessage(host.name, host.port,
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
62 nodeInfo.connectionName, nodeInfo.reverseName);
428
93995b7a9a05 change HostMessage field from parentAbsName to remoteAbsName
sugi
parents: 424
diff changeset
63 newHost.absName = nodeName;
93995b7a9a05 change HostMessage field from parentAbsName to remoteAbsName
sugi
parents: 424
diff changeset
64 newHost.remoteAbsName = nodeInfo.sourceNodeName;
422
2c6f86320691 add topology state recoder
sugi
parents: 410
diff changeset
65 ods.put("nodeInfo", newHost);
2c6f86320691 add topology state recoder
sugi
parents: 410
diff changeset
66 ods.put(nodeInfo.sourceNodeName, newHost);
2c6f86320691 add topology state recoder
sugi
parents: 410
diff changeset
67 new RecodeTopology();
410
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
68 }
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
69
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
70 if (nodeNames.isEmpty()) {
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
71 // configuration finish
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
72 for (String key : topology.keySet()) {
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
73 ods.put("local", key, ValueFactory.createNilValue());
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
74 }
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
75 } else {
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
76 new IncomingHosts(topology, nodeNames);
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
77 }
74e13553e3e3 change call do setKey in constractor
tatsuki
parents: 401
diff changeset
78 }
401
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
79
424
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
80 private String createCookie(String hostName) {
423
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
81 @SuppressWarnings("unchecked")
424
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
82 LinkedList<HostMessage> nodes = this.nodes.asClass(LinkedList.class);
423
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
83 boolean checkNewCookie = false;
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
84 String str = null;
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
85 while (!checkNewCookie){
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
86 str = RandomStringUtils.randomAscii(10);
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
87 int count = 0;
424
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
88 for (HostMessage node : nodes) {
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
89 if (str.equals(node.cookie)) break;
423
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
90 count++;
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
91 }
424
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
92 if (count == nodes.size())
423
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
93 checkNewCookie = true;
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
94 }
424
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
95 HostMessage table = new HostMessage();
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
96 table.absName = hostName;
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
97 table.cookie = str;
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
98 nodes.add(table);
faae3e976cc1 change cookie LinkedLIst Type from String.class to HostMessage.class
sugi
parents: 423
diff changeset
99 ods.put(this.nodes.key, nodes);
423
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
100 System.out.println(str);
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
101 return str;
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
102 }
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
103
401
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
104 }