diff src/main/java/alice/topology/manager/reconnection/CheckConnectionList.java @ 345:8f71c3e6f11d

Change directory structure Maven standard
author sugi
date Wed, 16 Apr 2014 18:26:07 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/alice/topology/manager/reconnection/CheckConnectionList.java	Wed Apr 16 18:26:07 2014 +0900
@@ -0,0 +1,70 @@
+package alice.topology.manager.reconnection;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import org.msgpack.type.ValueFactory;
+
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+import alice.topology.HostMessage;
+
+public class CheckConnectionList extends CodeSegment {
+
+	private Receiver name = ids.create(CommandType.TAKE);
+	private Receiver connection = ids.create(CommandType.TAKE);
+	private Receiver abs = ids.create(CommandType.PEEK);
+	private Receiver clone = ids.create(CommandType.TAKE);
+	
+	public CheckConnectionList(){
+		name.setKey("_RECABSNAME");
+		connection.setKey("connection");
+		abs.setKey("_ABSIPTABLE");
+		clone.setKey("_HMCLONE");
+	}
+	
+	@Override
+	public void run() {
+		@SuppressWarnings("unchecked")
+		HashMap<String, ArrayList<HostMessage>> connectionList = connection.asClass(HashMap.class);
+		@SuppressWarnings("unchecked")
+		List<HostMessage> ABSIPList = abs.asClass(List.class);
+		String absName = name.asClass(String.class);
+		HostMessage oldInfo =  clone.asClass(HostMessage.class);
+		HostMessage newInfo = null; 
+		for (HostMessage mes : ABSIPList){
+			if (mes.absName.equals(absName)){
+				newInfo = mes;
+				break;
+			}
+		}
+		
+		List<HostMessage> clist = connectionList.get(absName);
+		for (HostMessage mes : clist){
+			mes.setFlag();
+			ods.put(absName, mes);
+			for (HostMessage mes2 : ABSIPList){
+				if (mes.name.equals(mes2.name)&&mes.port == mes2.port){
+					String absName2 = mes2.getABSName();
+					List<HostMessage> clist2 = connectionList.get(absName2);
+					for (HostMessage mes3 : clist2){
+						if (mes3.name.equals(oldInfo.name)&&mes3.port == oldInfo.port){
+							mes3.name = newInfo.name;
+							mes3.port = newInfo.port;
+							mes3.setFlag();
+							ods.put(absName2, "_RECODATA", mes3);
+							break;
+						}
+					}
+					break;
+				}			
+			}
+		}
+		System.out.println("SendHost Data");
+		ods.put(absName, ValueFactory.createNilValue());
+		ods.update("connection", connectionList);
+		new ReceiveError();
+	}
+}
\ No newline at end of file