package org.erlide.util;
public final class NodeHostClassifier {
public final HostnameType host;
public final NodeType mode;
public static enum HostnameType {
NONE, SHORT, LONG
}
public static enum NodeType {
LOCAL_STANDALONE, LOCAL_DISTRIBUTED, REMOTE
}
public NodeHostClassifier(final String name) {
this(name, HostnameChecker.getInstance().getErlangHostName(false),
HostnameChecker.getInstance().getErlangHostName(true));
}
public NodeHostClassifier(final String name, final String shortThis,
final String longThis) {
if (name.length() == 0) {
host = HostnameType.NONE;
mode = NodeType.LOCAL_STANDALONE;
} else {
final String[] parts = name.split("@");
if (parts.length == 1) {
host = HostnameType.NONE;
mode = NodeType.LOCAL_DISTRIBUTED;
} else {
final String ahost = parts[1];
if (ahost.contains(".")) {
host = HostnameType.LONG;
} else {
host = HostnameType.SHORT;
}
if (ahost.equals(shortThis) || ahost.equals(longThis)) {
mode = NodeType.LOCAL_DISTRIBUTED;
} else {
mode = NodeType.REMOTE;
}
}
}
}
}