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")); } }