view src/main/java/alice/topology/manager/RecordTopology.java @ 639:8d9f35701fdb

fix RecordTopology
author suruga
date Sat, 30 Dec 2017 20:25:19 +0900
parents src/main/java/alice/topology/manager/RecodeTopology.java@fac27e395930
children
line wrap: on
line source

package alice.topology.manager;

import java.util.HashMap;
import java.util.LinkedList;

import alice.codesegment.CodeSegment;
import alice.datasegment.CommandType;
import alice.datasegment.Receiver;
import alice.topology.HostMessage;

public class RecordTopology extends CodeSegment {

    private Receiver info = ids.create(CommandType.TAKE);  // NodeInfo
    private Receiver info1 = ids.create(CommandType.TAKE); // HashMap

    public RecordTopology(){
        info.setKey("nodeInfo");
        info1.setKey("topology");
    }

    @Override
    public void run() {
        HostMessage hostInfo = info.asClass(HostMessage.class);
        @SuppressWarnings("unchecked")
        HashMap<String, LinkedList<HostMessage>> topology = info1.asClass(HashMap.class);
        LinkedList<HostMessage> connections;
        if (!topology.containsKey(hostInfo.remoteAbsName)) {
            connections = new LinkedList<HostMessage>();
        } else {
            connections = topology.get(hostInfo.remoteAbsName);
        }
        connections.add(hostInfo);
        topology.put(hostInfo.remoteAbsName, connections);
// need debug option
//        for (LinkedList<HostMessage> list :topology.values()){
//            System.out.print(list.get(0).remoteAbsName+" : ");
//            for (HostMessage host : list){
//                System.out.print("[ "+host.absName+" "+host.name+" "+host.port+" "+host.connectionName+" "+host.reverseName+" "+host.remoteAbsName+" ]");
//            }
//            System.out.println();
//        }
        ods.update(info1.key, topology);
    }

}