Mercurial > hg > Applications > TreeVNC
annotate src/main/java/jp/ac/u_ryukyu/treevnc/TreeManagement.java @ 427:ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 01 Feb 2016 04:39:53 +0900 |
parents | ffe01c959cdd |
children | b5459c7c8e4d |
rev | line source |
---|---|
206 | 1 package jp.ac.u_ryukyu.treevnc; |
11 | 2 |
153 | 3 |
4 import java.io.IOException; | |
208 | 5 import java.net.InetAddress; |
337
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
6 import java.net.UnknownHostException; |
153 | 7 import java.util.LinkedList; |
11 | 8 |
153 | 9 public class TreeManagement { |
188 | 10 |
231 | 11 public LinkedList<TreeVNCNode> nodeList = new LinkedList<TreeVNCNode>(); |
223 | 12 boolean runflag = false; |
13 private final int treebranch = 2; | |
14 private boolean showTreeNode = false; | |
15 private byte[] netmask; | |
16 private byte[] netaddress; | |
188 | 17 |
223 | 18 public TreeManagement(String hostName, int vncport, boolean showTree) { |
19 TreeVNCNode me = new TreeVNCNode(hostName, vncport,"localhost"); | |
20 showTreeNode = showTree; | |
21 me.setTreeNum(0); | |
22 nodeList.add(me); | |
23 } | |
24 | |
25 // | |
26 // private boolean checkAddress(String line) { | |
27 // String test[] = line.split("\\."); | |
28 // int a = Integer.parseInt(test[0]); | |
29 // int b = Integer.parseInt(test[1]); | |
30 // if ((192 == a && b == 168) || (172 == a && (b > 15 || b < 32)) | |
31 // || 10 == a) { | |
32 // return true; | |
33 // } else { | |
34 // return false; | |
35 // } | |
36 // } | |
11 | 37 |
138 | 38 |
223 | 39 /** |
40 * a parent is lost, remove from the list and move last one into here | |
41 * @param nodeNum | |
42 * parent value | |
43 */ | |
418
0543c380308c
Move bottleneck Node to outside node list
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
342
diff
changeset
|
44 public void moveLastNodeToLostNodePosition(int nodeNum) { |
223 | 45 nodeList.remove(nodeNum); |
328
1a2ab6bd5ba3
add function lost child node, remove deadChild nodeList.
oc
parents:
251
diff
changeset
|
46 if (nodeNum != nodeList.size()) { |
1a2ab6bd5ba3
add function lost child node, remove deadChild nodeList.
oc
parents:
251
diff
changeset
|
47 TreeVNCNode node = nodeList.removeLast(); |
1a2ab6bd5ba3
add function lost child node, remove deadChild nodeList.
oc
parents:
251
diff
changeset
|
48 node.setTreeNum(nodeNum); |
1a2ab6bd5ba3
add function lost child node, remove deadChild nodeList.
oc
parents:
251
diff
changeset
|
49 nodeList.add(nodeNum, node); |
1a2ab6bd5ba3
add function lost child node, remove deadChild nodeList.
oc
parents:
251
diff
changeset
|
50 } |
223 | 51 } |
11 | 52 |
223 | 53 private void checkParameter(int parent, int counter, int leaderflag2) { |
54 System.out.print("number p =" + parent); | |
55 System.out.print(" number i =" + counter); | |
56 System.out.println(" leaderflag=" + leaderflag2 + "\n"); | |
57 } | |
11 | 58 |
223 | 59 private TreeVNCNode getParentNode(int nodeNum) { |
60 int parentnum = (nodeNum - 1) / treebranch; | |
135
ada4d850a820
lostParent and notFoundParenet
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
134
diff
changeset
|
61 return nodeList.get(parentnum); |
223 | 62 } |
63 | |
64 | |
65 public TreeVNCNode getChildNode(TreeVNCNode newparent, int i) { | |
66 int child = newparent.getTreeNum() * treebranch + i + 1; | |
67 if (child >= nodeList.size()) { | |
68 return(null); | |
69 } else { | |
70 return(nodeList.get(child)); | |
71 } | |
328
1a2ab6bd5ba3
add function lost child node, remove deadChild nodeList.
oc
parents:
251
diff
changeset
|
72 } |
223 | 73 |
74 /** | |
75 * A parent is lost, move last node which has no child to the position | |
76 * @param hostname | |
77 * @param port | |
78 * @param myHostName | |
79 */ | |
195 | 80 public void fixLostParent(String hostname, int port, String myHostName) { |
136 | 81 TreeVNCNode lostParentNode = lookup(nodeList,hostname,port); |
328
1a2ab6bd5ba3
add function lost child node, remove deadChild nodeList.
oc
parents:
251
diff
changeset
|
82 if (lostParentNode == null ) return; // something wrong |
136 | 83 int treeNumber = lostParentNode.getTreeNum(); |
172 | 84 TreeVNCNode deadParent = getParentNode(treeNumber); |
223 | 85 TreeVNCNode me = nodeList.getFirst(); |
86 me.setHostName(myHostName); | |
173 | 87 if (deadParent.getTreeNum() == 0) { |
223 | 88 // if dead root, connect me. |
337
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
89 try { |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
90 connectTo(me, lostParentNode); |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
91 } catch (IOException e) { |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
92 e.printStackTrace(); |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
93 } |
223 | 94 return; |
173 | 95 } |
96 if (getChildNode(deadParent, 0) == null) return; | |
172 | 97 moveLastNodeToLostNodePosition(deadParent.getTreeNum()); |
98 lostNodeConnection(deadParent); | |
136 | 99 // if lostParentNode is the last one, we don't need reconnection |
100 // Thread.sleep(intv_time); | |
101 } | |
54 | 102 |
328
1a2ab6bd5ba3
add function lost child node, remove deadChild nodeList.
oc
parents:
251
diff
changeset
|
103 public void fixLostChild(String hostname, int port, String myHostName, int clientId) { |
1a2ab6bd5ba3
add function lost child node, remove deadChild nodeList.
oc
parents:
251
diff
changeset
|
104 TreeVNCNode lostChildNode = lookup(nodeList, hostname, port); |
1a2ab6bd5ba3
add function lost child node, remove deadChild nodeList.
oc
parents:
251
diff
changeset
|
105 if (lostChildNode == null) return; |
334 | 106 int lostChildNodeNum; |
107 // if isTreeManager | |
108 if (lostChildNode.getTreeNum() == 0) { | |
109 lostChildNodeNum = clientId + 1; | |
110 } else { | |
111 lostChildNodeNum = (lostChildNode.getTreeNum() * treebranch) + clientId + 1; | |
112 } | |
113 TreeVNCNode deadChild; | |
423
ffe01c959cdd
Fix LostChild for root node
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
418
diff
changeset
|
114 fixLostChild1(lostChildNodeNum); |
136 | 115 } |
54 | 116 |
427
ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
423
diff
changeset
|
117 public void fixLostChild1(int nodeNum) { |
ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
423
diff
changeset
|
118 TreeVNCNode deadNode; |
ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
423
diff
changeset
|
119 try { |
ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
423
diff
changeset
|
120 deadNode = nodeList.get(nodeNum); |
ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
423
diff
changeset
|
121 } catch (IndexOutOfBoundsException e) { |
ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
423
diff
changeset
|
122 // this node became new node instead of deathChild. |
ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
423
diff
changeset
|
123 deadNode = null; |
ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
423
diff
changeset
|
124 } |
ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
423
diff
changeset
|
125 if (deadNode != null) { |
ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
423
diff
changeset
|
126 moveLastNodeToLostNodePosition(deadNode.getTreeNum()); |
ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
423
diff
changeset
|
127 lostNodeConnection(deadNode); |
ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
423
diff
changeset
|
128 } |
ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
423
diff
changeset
|
129 if (showTreeNode) { |
ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
423
diff
changeset
|
130 showTreeNode(); |
ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
423
diff
changeset
|
131 } |
ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
423
diff
changeset
|
132 } |
ed15f0bd8dfa
Remove shareScrrenNumber for ScreenChangeRequest Message
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
423
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 * send reconnect to all children |
42fcc9419498
add error message, add lostParent case by fail to connectTo.
oc
parents:
329
diff
changeset
|
136 * @param deadNode |
42fcc9419498
add error message, add lostParent case by fail to connectTo.
oc
parents:
329
diff
changeset
|
137 */ |
418
0543c380308c
Move bottleneck Node to outside node list
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
342
diff
changeset
|
138 public void lostNodeConnection(TreeVNCNode deadNode) { |
331
42fcc9419498
add error message, add lostParent case by fail to connectTo.
oc
parents:
329
diff
changeset
|
139 if (nodeList.size() < deadNode.getTreeNum()+1) { |
42fcc9419498
add error message, add lostParent case by fail to connectTo.
oc
parents:
329
diff
changeset
|
140 return; |
42fcc9419498
add error message, add lostParent case by fail to connectTo.
oc
parents:
329
diff
changeset
|
141 } |
333 | 142 TreeVNCNode newNode = nodeList.get(deadNode.getTreeNum()); |
143 TreeVNCNode parentNode = getParentNode(newNode.getTreeNum()); | |
144 // new node connect to parent node. | |
337
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
145 try { |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
146 connectTo(parentNode, newNode); |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
147 } catch (IOException e) { |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
148 e.printStackTrace(); |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
149 } |
333 | 150 // 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
|
151 for(int i=0; i < treebranch; i++) { |
333 | 152 TreeVNCNode child = getChildNode(newNode, i); |
331
42fcc9419498
add error message, add lostParent case by fail to connectTo.
oc
parents:
329
diff
changeset
|
153 if (child != null) { |
337
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
154 try { |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
155 connectTo(newNode, child); |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
156 } catch (IOException e) { |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
157 e.printStackTrace(); |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
158 } |
331
42fcc9419498
add error message, add lostParent case by fail to connectTo.
oc
parents:
329
diff
changeset
|
159 } |
42fcc9419498
add error message, add lostParent case by fail to connectTo.
oc
parents:
329
diff
changeset
|
160 } |
42fcc9419498
add error message, add lostParent case by fail to connectTo.
oc
parents:
329
diff
changeset
|
161 } |
173 | 162 |
337
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
163 public void connectTo(TreeVNCNode newparent, TreeVNCNode n) throws IOException { |
223 | 164 TreeVncProtocol vc1 = new TreeVncProtocol(n.getHostname(),n.getPort()); |
165 short nodeId = (short) n.getTreeNum(); | |
166 vc1.connectTo(newparent.getHostname(), newparent.getPort(), isLeader(n), nodeId); | |
167 } | |
173 | 168 |
136 | 169 private int isLeader(TreeVNCNode n) { |
170 return ( n.getTreeNum() % treebranch == 1) ? 1 : 0; | |
171 } | |
172 | |
173 private TreeVNCNode lookup(LinkedList<TreeVNCNode> list, String hostname, int port) { | |
223 | 174 for (TreeVNCNode r : list) { |
175 if (r.getHostname().equals(hostname) && r.getPort() == port ) | |
176 return r; | |
177 } | |
178 return null; | |
136 | 179 } |
135
ada4d850a820
lostParent and notFoundParenet
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
134
diff
changeset
|
180 |
223 | 181 /** |
182 * Determine tree topology and send CONNECT_TO command | |
183 * @param hostname | |
184 * @param port | |
185 */ | |
186 public void decideWhereToConnect(String hostname, int port, String localhostname) { | |
423
ffe01c959cdd
Fix LostChild for root node
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
418
diff
changeset
|
187 TreeVNCNode node = new TreeVNCNode(hostname, port, localhostname); |
136 | 188 node.setTreeNum(nodeList.size()); |
337
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
189 |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
190 InetAddress ipAddress = null; |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
191 try { |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
192 ipAddress = InetAddress.getByName(hostname); |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
193 } catch (UnknownHostException e) { |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
194 System.out.println("root : whereToConnect : cannot get ipAddress" + hostname); |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
195 return; |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
196 } |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
197 if (onTheSameNetwork(ipAddress)) |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
198 nodeList.add(node); |
223 | 199 if (nodeList.size() >= treebranch + 1) { |
200 TreeVNCNode parent = getParentNode(node.getTreeNum()); | |
201 checkParameter(parent.getTreeNum(), nodeList.size(), isLeader(node)); | |
337
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
202 try { |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
203 connectTo(parent, node); |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
204 } catch (IOException e) { |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
205 nodeList.remove(node); |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
206 System.out.println("root : whereToConnect : Connection Faild" + hostname); |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
207 return; |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
208 } |
223 | 209 } else { |
337
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
210 // connect to me |
223 | 211 TreeVNCNode me = nodeList.getFirst(); |
212 me.setHostName(localhostname); | |
337
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
213 try { |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
214 connectTo(me, node); |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
215 } catch (IOException e) { |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
216 nodeList.remove(node); |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
217 System.out.println("root : whereToConnect : Connection Faild" + hostname); |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
218 return; |
c455b05f163b
in decideWhereToConnect, host on a different network isn't add to nodeList.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
334
diff
changeset
|
219 } |
223 | 220 } |
221 if (showTreeNode) { | |
222 showTreeNode(); | |
223 } | |
224 } | |
225 | |
226 /** | |
227 * show Tree Node. | |
228 */ | |
229 public void showTreeNode() { | |
230 int nl = 0, pow = 2; | |
163 | 231 for (int i=0; i<nodeList.size(); i++) { |
223 | 232 TreeVNCNode treeNode = nodeList.get(i); |
233 System.out.print(treeNode.getTreeNum() + ":" + treeNode.getPort() + ":" + treeNode.getHostname()); | |
234 if (i==nl) { | |
235 System.out.println(); | |
236 nl = nl + pow; | |
237 pow = pow * pow; | |
238 } else { | |
239 System.out.print(" "); | |
240 } | |
172 | 241 |
163 | 242 } |
188 | 243 System.out.println(); |
223 | 244 } |
11 | 245 |
223 | 246 public LinkedList<TreeVNCNode> getList() { |
247 return nodeList; | |
248 } | |
54 | 249 |
223 | 250 public void setList(LinkedList<TreeVNCNode> _ls) { |
251 nodeList = _ls; | |
252 } | |
54 | 253 |
223 | 254 public int getTreeBranch() { |
255 return treebranch; | |
256 } | |
136 | 257 |
223 | 258 public void setNetMask(byte[] netmask,byte[] netaddress) { |
259 this.netmask = netmask; | |
260 this.netaddress = netaddress; | |
261 } | |
262 | |
342 | 263 public boolean onTheSameNetwork(InetAddress adr) { |
223 | 264 byte [] byteadr = adr.getAddress(); |
265 if (byteadr.length != netmask.length) return false; | |
266 for(int i=0; i < netmask.length; i++) { | |
267 if ((netmask[i] & byteadr[i])!=netaddress[i]) return false; | |
268 } | |
269 return true; | |
270 } | |
54 | 271 } |