59 lines
1.5 KiB
Java
59 lines
1.5 KiB
Java
package cs451;
|
|
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.InputStreamReader;
|
|
import java.net.InetAddress;
|
|
import java.net.Socket;
|
|
import java.net.UnknownHostException;
|
|
|
|
public class SignalParser {
|
|
|
|
private static final String SIGNAL_KEY = "--signal";
|
|
|
|
private static final int SIGNAL_ARGS_NUM = 2;
|
|
private static final String COLON_REGEX = ":";
|
|
private static final String IP_START_REGEX = "/";
|
|
|
|
private static String ip;
|
|
private static int port;
|
|
|
|
public boolean populate(String key, String value) {
|
|
if (!key.equals(SIGNAL_KEY)) {
|
|
return false;
|
|
}
|
|
|
|
String[] signal = value.split(COLON_REGEX);
|
|
if (signal.length != SIGNAL_ARGS_NUM) {
|
|
return false;
|
|
}
|
|
|
|
try {
|
|
String ipTest = InetAddress.getByName(signal[0]).toString();
|
|
if (ipTest.startsWith(IP_START_REGEX)) {
|
|
ip = ipTest.substring(1);
|
|
} else {
|
|
ip = InetAddress.getByName(ipTest.split(IP_START_REGEX)[0]).getHostAddress();
|
|
}
|
|
|
|
port = Integer.parseInt(signal[1]);
|
|
if (port <= 0) {
|
|
System.err.println("Signal port must be a positive number!");
|
|
return false;
|
|
}
|
|
} catch (UnknownHostException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public String getIp() {
|
|
return ip;
|
|
}
|
|
|
|
public int getPort() {
|
|
return port;
|
|
}
|
|
}
|