comparison src/main/java/alice/topology/manager/IncomingHosts.java @ 437:b9fd22d9f6c5 dispose

refactoring IncomingHosts.java
author sugi
date Mon, 18 Aug 2014 15:54:53 +0900
parents 41bb86275910
children c973f7ee7c91
comparison
equal deleted inserted replaced
436:a9ed8e932a1e 437:b9fd22d9f6c5
11 import alice.datasegment.Receiver; 11 import alice.datasegment.Receiver;
12 import alice.topology.HostMessage; 12 import alice.topology.HostMessage;
13 13
14 public class IncomingHosts extends CodeSegment { 14 public class IncomingHosts extends CodeSegment {
15 15
16 HashMap<String, LinkedList<NodeInfo>> topology; 16 private Receiver topology = ids.create(CommandType.TAKE); // Topology from parse file
17 LinkedList<String> nodeNames; 17 private Receiver nodeNames = ids.create(CommandType.TAKE); // nodeName list
18 private Receiver host = ids.create(CommandType.TAKE); //HostMessage 18 private Receiver host = ids.create(CommandType.TAKE); // new coming host info
19 private Receiver absCookieTable = ids.create(CommandType.TAKE); // cookie, AbsName HashMap 19 private Receiver absCookieTable = ids.create(CommandType.TAKE); // cookie, AbsName HashMap
20 private Receiver cookie = ids.create(CommandType.TAKE); // MD5 20 private Receiver cookie = ids.create(CommandType.TAKE); // MD5
21 21
22 public IncomingHosts(HashMap<String, LinkedList<NodeInfo>> topology, 22 public IncomingHosts() {
23 LinkedList<String> nodeNames) { 23 this.topology.setKey("resultParse");
24 this.topology = topology; 24 this.nodeNames.setKey("nodeNames");
25 this.nodeNames = nodeNames;
26 this.host.setKey("host"); 25 this.host.setKey("host");
27 this.absCookieTable.setKey("absCookieTable"); 26 this.absCookieTable.setKey("absCookieTable");
28 this.cookie.setKey("MD5"); 27 this.cookie.setKey("MD5");
29 } 28 }
30 29
31 @Override 30 @Override
32 public void run() { 31 public void run() {
33 HostMessage host = this.host.asClass(HostMessage.class); 32 HostMessage host = this.host.asClass(HostMessage.class);
34 @SuppressWarnings("unchecked") 33 @SuppressWarnings("unchecked")
35 HashMap<String, String> absCookieTable = this.absCookieTable.asClass(HashMap.class); 34 HashMap<String, String> absCookieTable = this.absCookieTable.asClass(HashMap.class);
36 boolean match = false; 35 @SuppressWarnings("unchecked")
37 // check cookie 36 HashMap<String, LinkedList<NodeInfo>> topology = this.topology.asClass(HashMap.class);
38 if (host.cookie != null) { 37 @SuppressWarnings("unchecked")
39 if (absCookieTable.containsKey(host.cookie)){ 38 LinkedList<String> nodeNames = this.nodeNames.asClass(LinkedList.class);
40 match = true; 39
41 System.out.println("cookie is match"); 40
42 host.absName = absCookieTable.get(host.cookie); 41 System.out.println("new node come");
43 ods.put("reconnectHost", host); 42 // not have or match cookie
44 43 String nodeName = nodeNames.poll();
45 ods.put(this.absCookieTable.key, absCookieTable); 44 // Manager connect to Node
46 new SearchHostName(); 45 DataSegment.connect(nodeName, "", host.name, host.port);
47 46 ods.put(nodeName, "host", nodeName);
47
48 String cookie = this.cookie.asString();
49 absCookieTable.put(cookie, nodeName);
50 ods.put(this.absCookieTable.key, absCookieTable);
51
52 ods.put(nodeName, "cookie", cookie);
53
54 LinkedList<NodeInfo> nodes = topology.get(nodeName);
55 for (NodeInfo nodeInfo : nodes) {
56 HostMessage newHost = new HostMessage(host.name, host.port,
57 nodeInfo.connectionName, nodeInfo.reverseName);
58 newHost.absName = nodeName;
59 newHost.remoteAbsName = nodeInfo.sourceNodeName;
60
61 ods.put("nodeInfo", newHost);
62 ods.put(nodeInfo.sourceNodeName, newHost);
63 new RecodeTopology();
64 }
65
66 if (nodeNames.isEmpty()) {
67 // configuration finish
68 for (String key : topology.keySet()) {
69 ods.put("local", key, ValueFactory.createNilValue());
48 } 70 }
49 } 71 }
50 72
51 if (!match) { 73 ods.put(this.nodeNames.key, nodeNames);
52 System.out.println("new node come"); 74 ods.put(this.topology.key, topology);
53 // not have or match cookie
54 String nodeName = nodeNames.poll();
55 // Manager connect to Node
56 DataSegment.connect(nodeName, "", host.name, host.port);
57 ods.put(nodeName, "host", nodeName);
58
59 String cookie = this.cookie.asString();
60 absCookieTable.put(cookie, nodeName);
61 ods.put(this.absCookieTable.key, absCookieTable);
62
63 ods.put(nodeName, "cookie", cookie);
64
65 LinkedList<NodeInfo> nodes = topology.get(nodeName);
66 for (NodeInfo nodeInfo : nodes) {
67 HostMessage newHost = new HostMessage(host.name, host.port,
68 nodeInfo.connectionName, nodeInfo.reverseName);
69 newHost.absName = nodeName;
70 newHost.remoteAbsName = nodeInfo.sourceNodeName;
71
72 ods.put("nodeInfo", newHost);
73 ods.put(nodeInfo.sourceNodeName, newHost);
74 new RecodeTopology();
75 }
76
77 if (nodeNames.isEmpty()) {
78 // configuration finish
79 for (String key : topology.keySet()) {
80 ods.put("local", key, ValueFactory.createNilValue());
81 }
82 }
83 }
84 ods.put("orderHash", "order"); 75 ods.put("orderHash", "order");
85 new IncomingHosts(topology, nodeNames); 76 new IncomingHosts();
86 } 77 }
87 } 78 }