Add an implementation for SubprocessFactory based on the new JNI interface to Windows process management.
With this change, Bazel can build itself using native Windows process management and Ctrl-C works in server mode as expected. Yay!
Flipping the flag will come in a separate change that's easy to roll back if need be.
--
MOS_MIGRATED_REVID=126408264
diff --git a/src/main/java/com/google/devtools/build/lib/shell/Subprocess.java b/src/main/java/com/google/devtools/build/lib/shell/Subprocess.java
index 99e5577..f8a8a55 100644
--- a/src/main/java/com/google/devtools/build/lib/shell/Subprocess.java
+++ b/src/main/java/com/google/devtools/build/lib/shell/Subprocess.java
@@ -42,14 +42,19 @@
/**
* Returns the exit value of the process.
*
- * <p>Throws {@code IllegalThreadStateException} if the process has not terminated yet.
+ * <p>Throws {@code IOException} if the process has not terminated yet.
*/
int exitValue();
/**
+ * Returns the if the process has finished.
+ */
+ boolean finished();
+
+ /**
* Waits for the process to finish.
*/
- int waitFor() throws InterruptedException;
+ void waitFor() throws InterruptedException;
/**
* Returns a stream into which data can be written that the process will get on its stdin.