2014-09-03 10:15:41 -07:00
|
|
|
package magic;
|
|
|
|
|
2017-06-16 20:58:13 -07:00
|
|
|
import static java.nio.charset.StandardCharsets.UTF_8;
|
|
|
|
|
2015-03-18 14:19:34 -07:00
|
|
|
import java.io.BufferedReader;
|
2014-09-05 18:32:43 -07:00
|
|
|
import java.io.IOException;
|
2015-03-18 14:19:34 -07:00
|
|
|
import java.io.InputStreamReader;
|
|
|
|
import java.io.Reader;
|
2014-09-03 10:15:41 -07:00
|
|
|
|
|
|
|
public class FiremindQueueWorker {
|
|
|
|
|
2015-03-20 08:09:45 -07:00
|
|
|
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 {
|
2018-06-13 23:08:19 -07:00
|
|
|
|
2015-03-20 08:09:45 -07:00
|
|
|
Process p = pb.start();
|
2018-06-13 23:08:19 -07:00
|
|
|
|
|
|
|
Thread closeChildThread = new Thread() {
|
|
|
|
public void run() {
|
|
|
|
p.destroy();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
Runtime.getRuntime().addShutdownHook(closeChildThread);
|
2017-06-16 20:58:13 -07:00
|
|
|
Reader reader = new InputStreamReader(p.getInputStream(), UTF_8);
|
2015-03-20 08:09:45 -07:00
|
|
|
BufferedReader br = new BufferedReader(reader);
|
|
|
|
String line;
|
|
|
|
while ((line = br.readLine()) != null)
|
|
|
|
System.out.println(line);
|
|
|
|
|
|
|
|
p.waitFor();
|
|
|
|
reader.close();
|
|
|
|
lastExitStatus = p.exitValue();
|
2018-04-07 17:59:14 -07:00
|
|
|
} catch (IOException | InterruptedException e) {
|
2015-03-20 08:09:45 -07:00
|
|
|
// 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;
|
2018-04-07 17:59:14 -07:00
|
|
|
for (final String curr : args) {
|
2015-03-20 08:09:45 -07:00
|
|
|
if ("--self-terminate".equals(curr)) {
|
|
|
|
shutDownOnEmptyQueue = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return validArgs;
|
|
|
|
}
|
2014-09-03 10:15:41 -07:00
|
|
|
|
|
|
|
}
|