DS-Lab / src / main / java / dslab / util / NameserverConfig.java
NameserverConfig.java
Raw
package dslab.util;

import dslab.routing.Domain;
import dslab.util.Config;

/**
 * Wrapper for the a {@link Config} of a name server, for convenience and type-safety
 */
public class NameserverConfig {

    private final Config config;

    public NameserverConfig(Config config) {
        if(!config.getType().equals("ns"))
            throw new IllegalArgumentException("Expected config of type 'ns', but was '" + config.getType() + "'");

        this.config = config;
    }

    public boolean isRoot() {
        return !config.containsKey("domain"); //root is the only ns that doesn't manage a domain
    }

    public int registryPort() {
        return config.getInt("registry.port");
    }

    public String rootId() {
        return config.getString("root_id");
    }

    public String registryHost() {
        return config.getString("registry.host");
    }

    public Domain domain() {
        if(isRoot()) return Domain.root();
        else return new Domain(config.getString("domain"));
    }
}