magarena/src/magic/FiremindQueueWorker.java

67 lines
2.0 KiB
Java

package magic;
import static java.nio.charset.StandardCharsets.UTF_8;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
public class FiremindQueueWorker {
public static boolean shutDownOnEmptyQueue = false;
public static void main(final String[] args) {
parseArguments(args);
int lastExitStatus = 0;
while (!(shutDownOnEmptyQueue && lastExitStatus == 1)) {
ProcessBuilder pb = new ProcessBuilder("java", "-noverify", "-cp",
"Magarena.jar", "magic.firemind.FiremindDuelRunner");
pb.redirectErrorStream(true);
try {
Process p = pb.start();
Thread closeChildThread = new Thread() {
public void run() {
p.destroy();
}
};
Runtime.getRuntime().addShutdownHook(closeChildThread);
Reader reader = new InputStreamReader(p.getInputStream(), UTF_8);
BufferedReader br = new BufferedReader(reader);
String line;
while ((line = br.readLine()) != null)
System.out.println(line);
p.waitFor();
reader.close();
lastExitStatus = p.exitValue();
} catch (IOException | InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (lastExitStatus != 0) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
System.out.println("Woken");
}
}
}
}
private static boolean parseArguments(final String[] args) {
boolean validArgs = true;
for (final String curr : args) {
if ("--self-terminate".equals(curr)) {
shutDownOnEmptyQueue = true;
}
}
return validArgs;
}
}