annotate src/main/java/alice/topology/manager/CreateTreeTopology.java @ 599:3284428f525e dispose

add MetaCodeSegment & MetaDSM
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Mon, 15 Feb 2016 01:16:35 +0900
parents 8f765e3eed24
children 8a9fd716c335
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
1 package alice.topology.manager;
116e0fde9233 change algotherm
sugi
parents:
diff changeset
2
116e0fde9233 change algotherm
sugi
parents:
diff changeset
3 import java.util.HashMap;
599
3284428f525e add MetaCodeSegment & MetaDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 584
diff changeset
4
3284428f525e add MetaCodeSegment & MetaDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 584
diff changeset
5 import alice.codesegment.MetaCodeSegment;
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
6 import org.msgpack.type.ValueFactory;
116e0fde9233 change algotherm
sugi
parents:
diff changeset
7
116e0fde9233 change algotherm
sugi
parents:
diff changeset
8 import alice.codesegment.CodeSegment;
116e0fde9233 change algotherm
sugi
parents:
diff changeset
9 import alice.datasegment.CommandType;
116e0fde9233 change algotherm
sugi
parents:
diff changeset
10 import alice.datasegment.DataSegment;
116e0fde9233 change algotherm
sugi
parents:
diff changeset
11 import alice.datasegment.Receiver;
116e0fde9233 change algotherm
sugi
parents:
diff changeset
12 import alice.topology.HostMessage;
116e0fde9233 change algotherm
sugi
parents:
diff changeset
13
599
3284428f525e add MetaCodeSegment & MetaDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 584
diff changeset
14 public class CreateTreeTopology extends MetaCodeSegment {
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
15
116e0fde9233 change algotherm
sugi
parents:
diff changeset
16 private Receiver info = ids.create(CommandType.TAKE);
116e0fde9233 change algotherm
sugi
parents:
diff changeset
17 private Receiver info1 = ids.create(CommandType.TAKE);
584
8f765e3eed24 add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 578
diff changeset
18 private Receiver info2 = ids.create(CommandType.TAKE);
8f765e3eed24 add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 578
diff changeset
19 private Receiver info3 = ids.create(CommandType.TAKE);
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
20 private Receiver info4 = ids.create(CommandType.TAKE);
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
21 private Receiver info6 = ids.create(CommandType.TAKE);
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
22
514
6732d03d0174 refactor TopologyFix has bug
sugi
parents: 482
diff changeset
23 public CreateTreeTopology(){
584
8f765e3eed24 add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 578
diff changeset
24 info.setKey("newHost"); //HostMessage
8f765e3eed24 add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 578
diff changeset
25 info1.setKey("hostCount"); //incoming host count number for put node name like node0, node1, node2
8f765e3eed24 add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 578
diff changeset
26 info2.setKey("nameTable"); //HashMap.<String:nodeName, HostMessage>
8f765e3eed24 add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 578
diff changeset
27 info3.setKey("MD5"); //String:node's cookie that created by CreateHash
8f765e3eed24 add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 578
diff changeset
28 info4.setKey("absCookieTable"); //HashMap<String:cookie, String:nodeName>
8f765e3eed24 add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 578
diff changeset
29 info6.setKey("parentManager"); //ParentManager
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
30 }
116e0fde9233 change algotherm
sugi
parents:
diff changeset
31
116e0fde9233 change algotherm
sugi
parents:
diff changeset
32 @SuppressWarnings("unchecked")
116e0fde9233 change algotherm
sugi
parents:
diff changeset
33 @Override
116e0fde9233 change algotherm
sugi
parents:
diff changeset
34 public void run() {
116e0fde9233 change algotherm
sugi
parents:
diff changeset
35 String cookie = info3.asString();
576
2df12c110ebc change print log
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 523
diff changeset
36 System.out.println("cookie:" + cookie);
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
37 HostMessage host = info.asClass(HostMessage.class);
116e0fde9233 change algotherm
sugi
parents:
diff changeset
38 int comingHostCount = info1.asInteger();
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
39 ParentManager manager = info6.asClass(ParentManager.class);
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
40
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
41 HashMap<String, HostMessage> nameTable = info2.asClass(HashMap.class);
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
42 HashMap<String, String> absCookieTable = info4.asClass(HashMap.class);
116e0fde9233 change algotherm
sugi
parents:
diff changeset
43
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 518
diff changeset
44 String nodeName = "node"+comingHostCount;
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
45 // Manager connect to Node
480
c06070403ed4 named IncomingTcp and OutboundTcp Thread
sugi
parents: 475
diff changeset
46 DataSegment.connect(nodeName, nodeName, host.name, host.port);
584
8f765e3eed24 add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 578
diff changeset
47 ods.put(nodeName, "host"+host.topMNum, nodeName);
8f765e3eed24 add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 578
diff changeset
48 ods.put(nodeName, "cookie"+host.topMNum, cookie);
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
49
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 518
diff changeset
50 absCookieTable.put(cookie, nodeName);
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
51 ods.put(info4.key, absCookieTable);
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 518
diff changeset
52 ods.put(info1.key, comingHostCount+1);
482
8227a2fd5a55 bug fix
sugi
parents: 480
diff changeset
53 host.alive = true;
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
54 nameTable.put(nodeName, host);
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
55 manager.register(nodeName);
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
56
584
8f765e3eed24 add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 578
diff changeset
57 if (comingHostCount!=0) {///ルートでなければ親情報を持つ
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
58 // put parent information own
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
59 String parentAbsName = manager.getMyParent();
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
60 HostMessage parent = nameTable.get(parentAbsName);
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
61 int num = manager.getMyNumber();
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
62
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
63 HostMessage newHost = new HostMessage(parent.name, parent.port, "parent", "child"+num);
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
64 newHost.absName = parentAbsName;
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
65 newHost.remoteAbsName = nodeName; // address
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
66 ods.put(newHost.remoteAbsName, newHost);
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 518
diff changeset
67
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
68 ods.put("nodeInfo", newHost);
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
69 new RecodeTopology();
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
70
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
71 // put own information parent
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
72 newHost = new HostMessage(host.name, host.port, "child"+num, "parent");
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
73 newHost.absName = nodeName;
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
74 newHost.remoteAbsName = parentAbsName;
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
75
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
76 ods.put(newHost.remoteAbsName, newHost);
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
77 ods.put("nodeInfo", newHost);
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
78 new RecodeTopology();
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
79
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
80 }
116e0fde9233 change algotherm
sugi
parents:
diff changeset
81
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
82 ods.put(info2.key, nameTable);
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
83 ods.put(info6.key, manager);
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
84 ods.put(nodeName, ValueFactory.createNilValue());
116e0fde9233 change algotherm
sugi
parents:
diff changeset
85 if (comingHostCount==0)
116e0fde9233 change algotherm
sugi
parents:
diff changeset
86 ods.put("start", ValueFactory.createNilValue());
116e0fde9233 change algotherm
sugi
parents:
diff changeset
87 }
116e0fde9233 change algotherm
sugi
parents:
diff changeset
88 }