view src/main/java/alice/topology/manager/ComingStarHosts.java @ 601:30f2c04571c2 dispose

add chat, add Star topology to topology manager&node
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Wed, 27 Apr 2016 16:28:10 +0900
parents
children 8a9fd716c335
line wrap: on
line source

package alice.topology.manager;

import alice.codesegment.MetaCodeSegment;
import alice.datasegment.CommandType;
import alice.datasegment.DataSegment;
import alice.datasegment.Receiver;
import alice.topology.HostMessage;
import org.msgpack.type.ValueFactory;

import java.util.HashMap;

/**
 * Created by e125769 on 4/12/16.
 * this class put root info
 */
public class ComingStarHosts extends MetaCodeSegment {
    private Receiver info = ids.create(CommandType.TAKE);
    private Receiver info1 = ids.create(CommandType.TAKE);
    private Receiver info2 = ids.create(CommandType.TAKE);

    public ComingStarHosts(){
        info.setKey("newHost");
        info1.setKey("hostCount");      //incoming host count number for put node name like node0, node1, node2
        info2.setKey("nameTable");      //HashMap.<String:nodeName, HostMessage>
    }

    @Override
    public void run() {
        HostMessage host = info.asClass(HostMessage.class);
        int comingHostCount = info1.asInteger();

        HashMap<String, HostMessage> nameTable = info2.asClass(HashMap.class);

        String nodeName = "node"+comingHostCount;
        // Manager connect to Node
        DataSegment.connect(nodeName, nodeName, host.name, host.port);
        ods.put(nodeName, "host"+host.topMNum, nodeName);

        ods.put(info1.key, comingHostCount+1);
        host.alive = true;
        nameTable.put(nodeName, host);

        ods.put("root", host);
        ods.put("start", ValueFactory.createNilValue());
        ods.put(info2.key, nameTable);

        new CreateStarTopology();
    }
}