aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/windows
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2016-07-05 12:23:48 +0000
committerGravatar Klaus Aehlig <aehlig@google.com>2016-07-06 09:41:22 +0000
commit5a2655ae69c8c7640ac91aec7b7ed4c1be4195ea (patch)
tree3e8b37aeeaafdd46c870ca80a309940d34c213f0 /src/main/java/com/google/devtools/build/lib/windows
parent50681c1b6cca1856f5f7b401ee5c757f22aa2e54 (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.java18
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;
}