view src/main/java/christie/topology/manager/IncomingHosts.java @ 161:5c5a5da0d13d

add TopoDG
author akahori
date Tue, 22 Jan 2019 14:21:15 +0900
parents 3b9be156e280
children 240058b2ce3e
line wrap: on
line source

package christie.topology.manager;


import christie.annotation.Peek;
import christie.annotation.Take;
import christie.codegear.CodeGear;
import christie.codegear.CodeGearManager;
import christie.topology.HostMessage;
import christie.topology.TopologyDataGear;

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

public class IncomingHosts extends CodeGear {

    @Take
    HashMap<String, LinkedList<HostMessage>> resultParse;
    @Take
    LinkedList<String> nodeNames;
    @Take
    HashMap<String, String> absCookieTable;

    @Take // new coming host info
    HostMessage newHost;
    @Take
    String MD5;

    @Peek
    TopologyDataGear topoDG;

    public IncomingHosts() {

    }

    @Override
    protected void run(CodeGearManager cgm) {
        // not have or match cookie
        String nodeName = nodeNames.poll();
        getLocalDGM().put("nodeNames", nodeNames);

        // Manager connect to Node
        cgm.createRemoteDGM(nodeName,
                            newHost.getHostName(),
                            newHost.getPort());

        absCookieTable.put(MD5, nodeName);
        getLocalDGM().put("absCookieTable", absCookieTable);

        topoDG.setNodeName(nodeName);
        getDGM(nodeName).put( "topoDG", topoDG);
        getDGM(nodeName).put("cookie", MD5);

        LinkedList<HostMessage> nodeInfoList = resultParse.get(nodeName);
        getDGM(nodeName).put("connectNodeNum",nodeInfoList.size());
        for (HostMessage nodeInfo : nodeInfoList) {

            nodeInfo.setHostAndPort(newHost);

            getLocalDGM().put("nodeInfo", nodeInfo);
            getDGM(nodeName).put("remoteNodeInfo", nodeInfo);
            cgm.setup(new RecordTopology());
        }
        getLocalDGM().put("resultParse", resultParse);

        cgm.setup(new IncomingHosts());
    }
}