view src/main/java/christie/topology/node/TopologyNode.java @ 49:fd944876257b

add node and keepalive
author akahori
date Thu, 23 Aug 2018 09:29:05 +0900
parents
children 9922e6decbe8
line wrap: on
line source

package christie.topology.node;

import christie.codegear.CodeGear;
import christie.codegear.CodeGearManager;
import christie.topology.HostMessage;
import christie.topology.manager.IncomingHosts;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;

public class TopologyNode extends CodeGear{

    private final String manager;
    private final String local;
    private TopologyNodeConfig conf;
    private CodeGear startCS;

    public TopologyNode(TopologyNodeConfig conf, CodeGear startCS) {
        this.conf = conf;
        this.startCS = startCS;
        this.manager = conf.getManagerKey();
        this.local = conf.getLocalKey();
    }

    @Override
    protected void run(CodeGearManager cgm) {
        cgm.createRemoteDGM(manager, conf.getManagerHostName(), conf.getManagerPort());
        String localHostName = null;
        try {
            localHostName = InetAddress.getLocalHost().getHostAddress();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        cgm.setup(new SaveCookie());
        if (cgm.localPort == 0) {
            // local test mode
            localHostName = conf.getLocalKey();
        }
        getLocalDGM().put("config" , conf );

        HostMessage host = new HostMessage(localHostName, cgm.localPort);
        host.cookie = conf.cookie;
        getDGM(manager).put("hostMessage", host);

        getLocalDGM().put("_CLIST", new ArrayList<String>());
        //getDGM(local).put("_CLIST", new ArrayList<String>());

        cgm.setup(new IncomingAbstractHostName(conf));

        cgm.setup(new IncomingReverseKey());

        getLocalDGM().put("reverseCount", 0);

        cgm.setup(new ConfigurationFinish(startCS));

    }
}