comparison src/alice/topology/manager/reconnection/CheckConnectionList.java @ 269:9982e1c4f099

debugging reconnectManager
author sugi
date Tue, 20 Aug 2013 17:35:03 +0900
parents
children 23e53aaa8720
comparison
equal deleted inserted replaced
268:709936c00c89 269:9982e1c4f099
1 package alice.topology.manager.reconnection;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.List;
6
7 import alice.codesegment.CodeSegment;
8 import alice.datasegment.CommandType;
9 import alice.datasegment.Receiver;
10 import alice.topology.HostMessage;
11
12 public class CheckConnectionList extends CodeSegment {
13
14 private Receiver name = ids.create(CommandType.TAKE);
15 private Receiver connection = ids.create(CommandType.TAKE);
16 private Receiver abs = ids.create(CommandType.PEEK);
17 private Receiver clone = ids.create(CommandType.TAKE);
18
19 public CheckConnectionList(){
20 name.setKey("_RECABSNAME");
21 connection.setKey("connection");
22 abs.setKey("_ABSIPTABLE");
23 clone.setKey("HMCLONE");
24 }
25
26 @Override
27 public void run() {
28 System.out.println("CheckConnectionList");
29 @SuppressWarnings("unchecked")
30 HashMap<String, ArrayList<HostMessage>> connectionList = connection.asClass(HashMap.class);
31 @SuppressWarnings("unchecked")
32 List<HostMessage> ABSIPList = abs.asClass(List.class);
33 String absName = name.asClass(String.class);
34 HostMessage oldInfo = clone.asClass(HostMessage.class);
35 HostMessage newInfo = null;
36 for (HostMessage mes : ABSIPList){
37 if (mes.absName.equals(absName)){
38 newInfo = mes;
39 break;
40 }
41 }
42
43 List<HostMessage> clist = connectionList.get(absName);
44 for (HostMessage mes : clist){
45 ods.put(absName, mes);
46 for (HostMessage mes2 : ABSIPList){
47 if (mes.name.equals(mes2.name)&&mes.port == mes2.port){
48 String absName2 = mes2.getABSName();
49 List<HostMessage> clist2 = connectionList.get(absName2);
50 for (HostMessage mes3 : clist2){
51 if (mes3.name.equals(oldInfo.name)&&mes3.port == oldInfo.port){
52 mes3.name = newInfo.name;
53 mes3.port = newInfo.port;
54 break;
55 }
56 ods.put(absName, "_RECODATA", mes3);
57 }
58 break;
59 }
60 }
61 }
62
63 ods.update("connection", connectionList);
64 new ReceiveError();
65 }
66 }
67