diff options
author | Lukacs Berki <lberki@google.com> | 2016-07-05 12:23:48 +0000 |
---|---|---|
committer | Klaus Aehlig <aehlig@google.com> | 2016-07-06 09:41:22 +0000 |
commit | 5a2655ae69c8c7640ac91aec7b7ed4c1be4195ea (patch) | |
tree | 3e8b37aeeaafdd46c870ca80a309940d34c213f0 /src/main/java/com/google/devtools/build/lib/windows | |
parent | 50681c1b6cca1856f5f7b401ee5c757f22aa2e54 (diff) |
Make Windows process management nicer.
Subprocesses now get killed if the Bazel server itself is killed and so do their subprocesses.
Also implemented Subprocess#close() so that we get a little more control over when the native structures are cleaned up.
--
MOS_MIGRATED_REVID=126628000
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/windows')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/windows/WindowsSubprocess.java | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/windows/WindowsSubprocess.java b/src/main/java/com/google/devtools/build/lib/windows/WindowsSubprocess.java index 0a30ab2aa1..df7b11c8fc 100644 --- a/src/main/java/com/google/devtools/build/lib/windows/WindowsSubprocess.java +++ b/src/main/java/com/google/devtools/build/lib/windows/WindowsSubprocess.java @@ -40,7 +40,7 @@ public class WindowsSubprocess implements Subprocess { @Override public void write(int b) throws IOException { - byte[] buf = new byte[]{b >= 128 ? ((byte) (b - 256)) : ((byte) b)}; + byte[] buf = new byte[]{ (byte) b }; write(buf, 0, 1); } @@ -66,10 +66,11 @@ public class WindowsSubprocess implements Subprocess { if (read(buf, 0, 1) != 1) { return -1; } else { - return buf[0] < 0 ? 256 + buf[0] : buf[0]; + return buf[0] & 0xff; } } + @Override public int read(byte b[], int off, int len) throws IOException { return readStream(stream, b, off, len); } @@ -122,10 +123,7 @@ public class WindowsSubprocess implements Subprocess { @Override public synchronized void finalize() { - if (nativeProcess != -1) { - WindowsProcesses.nativeDelete(nativeProcess); - nativeProcess = -1; - } + close(); } @Override @@ -163,6 +161,14 @@ public class WindowsSubprocess implements Subprocess { } @Override + public synchronized void close() { + if (nativeProcess != -1) { + WindowsProcesses.nativeDelete(nativeProcess); + nativeProcess = -1; + } + } + + @Override public OutputStream getOutputStream() { return outputStream; } |