view src/main/java/alice/topology/node/TopologyNodeConfig.java @ 565:fbf3a994071e dispose

add MultiTopologyNodeCongingFactory to TopologyNodeConfig for over NAT
author Nozomi
date Thu, 26 Nov 2015 19:11:35 +0900
parents 5a9b83c64ddf
children 6cc42645f05c
line wrap: on
line source

package alice.topology.node;

import java.util.ArrayList;
import java.util.LinkedList;

import alice.daemon.Config;

public class TopologyNodeConfig extends Config {

    private String managerHostName;
    private int managerPort = 10000;
    public String cookie;
    private ArrayList<Class> eventList = new ArrayList<Class>();

    public TopologyNodeConfig(String[] args) {
        super(args);
        for (int i = 0; i< args.length; i++) {
            if ("-host".equals(args[i])) {
                setManagerHostName(args[++i]);
            } else if ("-port".equals(args[i])) {
                setManagerPort(Integer.parseInt(args[++i]));
            } else if ("-cookie".equals(args[i])) {
                cookie = args[++i];
            }
        }
    }

    public static LinkedList<TopologyNodeConfig> MultiTopologyNodeCongingFactory(String[] args) {
        LinkedList<TopologyNodeConfig> configList = new LinkedList<TopologyNodeConfig>();
        LinkedList<String> nodeConfigArgs = new LinkedList<String>();

        for(int i = 0; i < args.length; ++i) {
            if("-host".equals(args[i])) {
                if(!nodeConfigArgs.isEmpty()){
                    configList.add(new TopologyNodeConfig((String[]) nodeConfigArgs.toArray());
                    nodeConfigArgs = new LinkedList<String>();
                }
                ++i;
                nodeConfigArgs.add(args[i]);
            } else if("-port".equals(args[i])) {
                ++i;
                nodeConfigArgs.add(args[i]);
            } else if("-cookie".equals(args[i])) {
                ++i;
                nodeConfigArgs.add(args[i]);
            }
        }

    }

    public String getManagerHostName() {
        return managerHostName;
    }

    public void setManagerHostName(String managerHostName) {
        this.managerHostName = managerHostName;
    }

    public int getManagerPort() {
        return managerPort;
    }

    public void setManagerPort(int managerPort) {
        this.managerPort = managerPort;
    }

    public void register(Class clazz) {
        if ("CodeSegment".equals(clazz.getSuperclass().getSimpleName()))
            eventList.add(clazz);
    }

    public void executeEvent() {
        for (Class clazz : eventList)
            try {
                clazz.newInstance();
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e){

            }
    }

}