view src/main/java/alice/topology/node/ConfigurationFinish.java @ 647:e321c5ec9b58

fix toplogy manager; ring worked
author suruga
date Sun, 31 Dec 2017 19:32:27 +0900
parents 4027e55df60d
children
line wrap: on
line source

package alice.topology.node;

import alice.daemon.Config;
import alice.topology.manager.TopologyManagerConfig;
import org.msgpack.type.ValueFactory;

import alice.codesegment.CodeSegment;
import alice.datasegment.CommandType;
import alice.datasegment.Receiver;
import alice.topology.manager.keeparive.StartKeepAlive;

public class ConfigurationFinish extends CodeSegment {

    public Receiver reverseCount = ids.create(CommandType.PEEK);
    public Receiver configNodeNum = ids.create(CommandType.PEEK);
    public Receiver config = ids.create(CommandType.PEEK);
    private CodeSegment startCS;

    public ConfigurationFinish(CodeSegment startCS) {
        // System.err.println("config finish ...") ;
        this.startCS = startCS;
        reverseCount.setKey("local", "reverseCount");
        configNodeNum.setKey("local", "configNodeNum");
        config.setKey("local","config");
    }

    @Override
    public void run() {
        int rcount = reverseCount.asInteger();
        int ncount = configNodeNum.asInteger();
        Config tconfig = config.asClass(Config.class);
        // System.err.println(" rcount = " + Integer.toString(rcount) + " " + Integer.toString(ncount));
        if (rcount == ncount) {
            ods.put("manager", "done", ValueFactory.createNilValue());
            Start cs = new Start(startCS);
            cs.done.setKey("manager", "start");

            if (tconfig.useKeepAlive)
                new StartKeepAlive().execute();
            new ReceiveCloseMessage(CommandType.PEEK);
            ClosedEventManager.getInstance().register(DeleteConnection.class);
            ClosedEventManager.getInstance().setKey();
            return;
        }

        new ConfigurationFinish(startCS);
    }
}