annotate src/main/java/jp/ac/u_ryukyu/treevnc/TreeManagement.java @ 333:1be15ac758b4

rename value in lostNodeConnection, add comment.
author oc
date Wed, 04 Feb 2015 17:57:22 +0900
parents 42fcc9419498
children dff2f92ae3ff
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
206
2b3eb4a9492f MyRfbProto reorganization
oc
parents: 195
diff changeset
1 package jp.ac.u_ryukyu.treevnc;
11
57ae9fbb1245 add files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
153
e68dfd1972ac fix bad names.
oc
parents: 147
diff changeset
3
e68dfd1972ac fix bad names.
oc
parents: 147
diff changeset
4 import java.io.IOException;
208
f1d7cb4a1868 compute netmask and netaddress
oc
parents: 206
diff changeset
5 import java.net.InetAddress;
153
e68dfd1972ac fix bad names.
oc
parents: 147
diff changeset
6 import java.util.LinkedList;
11
57ae9fbb1245 add files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7
153
e68dfd1972ac fix bad names.
oc
parents: 147
diff changeset
8 public class TreeManagement {
188
f176bffcdc4a add showTreeNode option.
oc
parents: 178
diff changeset
9
231
0e0e6744432c get new nodeList for checkDelay.
oc
parents: 223
diff changeset
10 public LinkedList<TreeVNCNode> nodeList = new LinkedList<TreeVNCNode>();
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
11 boolean runflag = false;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
12 private final int treebranch = 2;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
13 private boolean showTreeNode = false;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
14 private byte[] netmask;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
15 private byte[] netaddress;
188
f176bffcdc4a add showTreeNode option.
oc
parents: 178
diff changeset
16
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
17 public TreeManagement(String hostName, int vncport, boolean showTree) {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
18 TreeVNCNode me = new TreeVNCNode(hostName, vncport,"localhost");
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
19 showTreeNode = showTree;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
20 me.setTreeNum(0);
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
21 nodeList.add(me);
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
22 }
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
23
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
24 //
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
25 // private boolean checkAddress(String line) {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
26 // String test[] = line.split("\\.");
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
27 // int a = Integer.parseInt(test[0]);
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
28 // int b = Integer.parseInt(test[1]);
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
29 // if ((192 == a && b == 168) || (172 == a && (b > 15 || b < 32))
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
30 // || 10 == a) {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
31 // return true;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
32 // } else {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
33 // return false;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
34 // }
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
35 // }
11
57ae9fbb1245 add files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36
138
c3761c896607 minor fix
oc
parents: 136
diff changeset
37
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
38 /**
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
39 * a parent is lost, remove from the list and move last one into here
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
40 * @param nodeNum
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
41 * parent value
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
42 */
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
43 private void moveLastNodeToLostNodePosition(int nodeNum) {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
44 nodeList.remove(nodeNum);
328
1a2ab6bd5ba3 add function lost child node, remove deadChild nodeList.
oc
parents: 251
diff changeset
45 if (nodeNum != nodeList.size()) {
1a2ab6bd5ba3 add function lost child node, remove deadChild nodeList.
oc
parents: 251
diff changeset
46 TreeVNCNode node = nodeList.removeLast();
1a2ab6bd5ba3 add function lost child node, remove deadChild nodeList.
oc
parents: 251
diff changeset
47 node.setTreeNum(nodeNum);
1a2ab6bd5ba3 add function lost child node, remove deadChild nodeList.
oc
parents: 251
diff changeset
48 nodeList.add(nodeNum, node);
1a2ab6bd5ba3 add function lost child node, remove deadChild nodeList.
oc
parents: 251
diff changeset
49 }
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
50 }
11
57ae9fbb1245 add files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
52 private void checkParameter(int parent, int counter, int leaderflag2) {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
53 System.out.print("number p =" + parent);
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
54 System.out.print(" number i =" + counter);
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
55 System.out.println(" leaderflag=" + leaderflag2 + "\n");
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
56 }
11
57ae9fbb1245 add files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
58 private TreeVNCNode getParentNode(int nodeNum) {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
59 int parentnum = (nodeNum - 1) / treebranch;
135
ada4d850a820 lostParent and notFoundParenet
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 134
diff changeset
60 return nodeList.get(parentnum);
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
61 }
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
62
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
63
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
64 public TreeVNCNode getChildNode(TreeVNCNode newparent, int i) {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
65 int child = newparent.getTreeNum() * treebranch + i + 1;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
66 if (child >= nodeList.size()) {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
67 return(null);
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
68 } else {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
69 return(nodeList.get(child));
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
70 }
328
1a2ab6bd5ba3 add function lost child node, remove deadChild nodeList.
oc
parents: 251
diff changeset
71 }
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
72
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
73 /**
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
74 * A parent is lost, move last node which has no child to the position
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
75 * @param hostname
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
76 * @param port
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
77 * @param myHostName
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
78 */
195
a204b53a30c7 set connectTo localhostname.
oc
parents: 188
diff changeset
79 public void fixLostParent(String hostname, int port, String myHostName) {
136
81b558b38b9f reconnection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 135
diff changeset
80 TreeVNCNode lostParentNode = lookup(nodeList,hostname,port);
328
1a2ab6bd5ba3 add function lost child node, remove deadChild nodeList.
oc
parents: 251
diff changeset
81 if (lostParentNode == null ) return; // something wrong
136
81b558b38b9f reconnection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 135
diff changeset
82 int treeNumber = lostParentNode.getTreeNum();
172
73c42f9d04a8 fix send connectTo command when lostNodeConnection.
oc
parents: 169
diff changeset
83 TreeVNCNode deadParent = getParentNode(treeNumber);
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
84 TreeVNCNode me = nodeList.getFirst();
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
85 me.setHostName(myHostName);
173
70068c2642de fix lostParent.
oc
parents: 172
diff changeset
86 if (deadParent.getTreeNum() == 0) {
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
87 // if dead root, connect me.
331
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
88 connectTo(me, lostParentNode);
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
89 return;
173
70068c2642de fix lostParent.
oc
parents: 172
diff changeset
90 }
70068c2642de fix lostParent.
oc
parents: 172
diff changeset
91 if (getChildNode(deadParent, 0) == null) return;
172
73c42f9d04a8 fix send connectTo command when lostNodeConnection.
oc
parents: 169
diff changeset
92 moveLastNodeToLostNodePosition(deadParent.getTreeNum());
73c42f9d04a8 fix send connectTo command when lostNodeConnection.
oc
parents: 169
diff changeset
93 lostNodeConnection(deadParent);
136
81b558b38b9f reconnection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 135
diff changeset
94 // if lostParentNode is the last one, we don't need reconnection
81b558b38b9f reconnection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 135
diff changeset
95 // Thread.sleep(intv_time);
81b558b38b9f reconnection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 135
diff changeset
96 }
54
0ae87c7e767c bug fix
one
parents: 53
diff changeset
97
328
1a2ab6bd5ba3 add function lost child node, remove deadChild nodeList.
oc
parents: 251
diff changeset
98 public void fixLostChild(String hostname, int port, String myHostName, int clientId) {
329
230038d5127d change reconnect new node instead of lost child node.
oc
parents: 328
diff changeset
99 System.out.println("fixLostChild");
328
1a2ab6bd5ba3 add function lost child node, remove deadChild nodeList.
oc
parents: 251
diff changeset
100 TreeVNCNode lostChildNode = lookup(nodeList, hostname, port);
1a2ab6bd5ba3 add function lost child node, remove deadChild nodeList.
oc
parents: 251
diff changeset
101 if (lostChildNode == null) return;
1a2ab6bd5ba3 add function lost child node, remove deadChild nodeList.
oc
parents: 251
diff changeset
102 TreeVNCNode deadChild = getChildNode(lostChildNode, clientId);
329
230038d5127d change reconnect new node instead of lost child node.
oc
parents: 328
diff changeset
103 if (deadChild!=null) {
230038d5127d change reconnect new node instead of lost child node.
oc
parents: 328
diff changeset
104 moveLastNodeToLostNodePosition(deadChild.getTreeNum());
230038d5127d change reconnect new node instead of lost child node.
oc
parents: 328
diff changeset
105 lostNodeConnection(deadChild);
230038d5127d change reconnect new node instead of lost child node.
oc
parents: 328
diff changeset
106 }
188
f176bffcdc4a add showTreeNode option.
oc
parents: 178
diff changeset
107 if (showTreeNode) {
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
108 showTreeNode();
188
f176bffcdc4a add showTreeNode option.
oc
parents: 178
diff changeset
109 }
136
81b558b38b9f reconnection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 135
diff changeset
110 }
54
0ae87c7e767c bug fix
one
parents: 53
diff changeset
111
331
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
112 /**
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
113 * send reconnect to all children
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
114 * @param deadNode
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
115 */
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
116 private void lostNodeConnection(TreeVNCNode deadNode) {
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
117 if (nodeList.size() < deadNode.getTreeNum()+1) {
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
118 return;
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
119 }
333
1be15ac758b4 rename value in lostNodeConnection, add comment.
oc
parents: 331
diff changeset
120 TreeVNCNode newNode = nodeList.get(deadNode.getTreeNum());
1be15ac758b4 rename value in lostNodeConnection, add comment.
oc
parents: 331
diff changeset
121 TreeVNCNode parentNode = getParentNode(newNode.getTreeNum());
1be15ac758b4 rename value in lostNodeConnection, add comment.
oc
parents: 331
diff changeset
122 // new node connect to parent node.
1be15ac758b4 rename value in lostNodeConnection, add comment.
oc
parents: 331
diff changeset
123 connectTo(parentNode, newNode);
1be15ac758b4 rename value in lostNodeConnection, add comment.
oc
parents: 331
diff changeset
124 // if children node exist, children connect to new node.
331
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
125 for(int i=0; i < treebranch; i++) {
333
1be15ac758b4 rename value in lostNodeConnection, add comment.
oc
parents: 331
diff changeset
126 TreeVNCNode child = getChildNode(newNode, i);
331
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
127 if (child != null) {
333
1be15ac758b4 rename value in lostNodeConnection, add comment.
oc
parents: 331
diff changeset
128 connectTo(newNode, child);
331
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
129 }
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
130 }
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
131 }
173
70068c2642de fix lostParent.
oc
parents: 172
diff changeset
132
70068c2642de fix lostParent.
oc
parents: 172
diff changeset
133
331
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
134
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
135 public void connectTo(TreeVNCNode newparent, TreeVNCNode n) {
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
136 TreeVncProtocol vc1 = new TreeVncProtocol(n.getHostname(),n.getPort());
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
137 short nodeId = (short) n.getTreeNum();
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
138 vc1.connectTo(newparent.getHostname(), newparent.getPort(), isLeader(n), nodeId);
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
139 }
173
70068c2642de fix lostParent.
oc
parents: 172
diff changeset
140
136
81b558b38b9f reconnection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 135
diff changeset
141 private int isLeader(TreeVNCNode n) {
81b558b38b9f reconnection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 135
diff changeset
142 return ( n.getTreeNum() % treebranch == 1) ? 1 : 0;
81b558b38b9f reconnection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 135
diff changeset
143 }
81b558b38b9f reconnection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 135
diff changeset
144
81b558b38b9f reconnection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 135
diff changeset
145 private TreeVNCNode lookup(LinkedList<TreeVNCNode> list, String hostname, int port) {
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
146 for (TreeVNCNode r : list) {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
147 if (r.getHostname().equals(hostname) && r.getPort() == port )
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
148 return r;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
149 }
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
150 return null;
136
81b558b38b9f reconnection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 135
diff changeset
151 }
135
ada4d850a820 lostParent and notFoundParenet
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 134
diff changeset
152
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
153 /**
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
154 * Determine tree topology and send CONNECT_TO command
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
155 * @param hostname
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
156 * @param port
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
157 */
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
158 public void decideWhereToConnect(String hostname, int port, String localhostname) {
147
703db66138b5 WhereToConnect
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 146
diff changeset
159 TreeVNCNode node = new TreeVNCNode(hostname,port,localhostname);
136
81b558b38b9f reconnection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 135
diff changeset
160 node.setTreeNum(nodeList.size());
81b558b38b9f reconnection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 135
diff changeset
161 nodeList.add(node);
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
162 if (nodeList.size() >= treebranch + 1) {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
163 TreeVNCNode parent = getParentNode(node.getTreeNum());
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
164 checkParameter(parent.getTreeNum(), nodeList.size(), isLeader(node));
331
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
165 connectTo(parent, node);
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
166 } else {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
167 // connect to me
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
168 TreeVNCNode me = nodeList.getFirst();
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
169 me.setHostName(localhostname);
331
42fcc9419498 add error message, add lostParent case by fail to connectTo.
oc
parents: 329
diff changeset
170 connectTo(me, node);
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
171 }
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
172 if (showTreeNode) {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
173 showTreeNode();
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
174 }
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
175 }
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
176
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
177 /**
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
178 * show Tree Node.
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
179 */
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
180 public void showTreeNode() {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
181 int nl = 0, pow = 2;
163
c850c2fce039 add showTreeNode method.
oc
parents: 153
diff changeset
182 for (int i=0; i<nodeList.size(); i++) {
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
183 TreeVNCNode treeNode = nodeList.get(i);
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
184 System.out.print(treeNode.getTreeNum() + ":" + treeNode.getPort() + ":" + treeNode.getHostname());
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
185 if (i==nl) {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
186 System.out.println();
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
187 nl = nl + pow;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
188 pow = pow * pow;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
189 } else {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
190 System.out.print(" ");
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
191 }
172
73c42f9d04a8 fix send connectTo command when lostNodeConnection.
oc
parents: 169
diff changeset
192
163
c850c2fce039 add showTreeNode method.
oc
parents: 153
diff changeset
193 }
188
f176bffcdc4a add showTreeNode option.
oc
parents: 178
diff changeset
194 System.out.println();
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
195 }
11
57ae9fbb1245 add files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
196
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
197 public LinkedList<TreeVNCNode> getList() {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
198 return nodeList;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
199 }
54
0ae87c7e767c bug fix
one
parents: 53
diff changeset
200
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
201 public void setList(LinkedList<TreeVNCNode> _ls) {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
202 nodeList = _ls;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
203 }
54
0ae87c7e767c bug fix
one
parents: 53
diff changeset
204
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
205 public int getTreeBranch() {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
206 return treebranch;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
207 }
136
81b558b38b9f reconnection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 135
diff changeset
208
223
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
209 public void setNetMask(byte[] netmask,byte[] netaddress) {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
210 this.netmask = netmask;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
211 this.netaddress = netaddress;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
212 }
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
213
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
214 public boolean onTheSameNetwork(InetAddress adr ) {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
215 byte [] byteadr = adr.getAddress();
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
216 if (byteadr.length != netmask.length) return false;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
217 for(int i=0; i < netmask.length; i++) {
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
218 if ((netmask[i] & byteadr[i])!=netaddress[i]) return false;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
219 }
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
220 return true;
3189e210a7ed indent fix.
oc
parents: 208
diff changeset
221 }
208
f1d7cb4a1868 compute netmask and netaddress
oc
parents: 206
diff changeset
222
54
0ae87c7e767c bug fix
one
parents: 53
diff changeset
223 }