aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/server/RPCTestingClient.java
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2016-03-22 08:02:18 +0000
committerGravatar Lukacs Berki <lberki@google.com>2016-03-22 08:09:59 +0000
commit4dd60f9cef8a206bac8f83af8153bb8e335479bc (patch)
tree4d737bef42bfb20f707bb5362b6bbdb41d30f2f4 /src/test/java/com/google/devtools/build/lib/server/RPCTestingClient.java
parentb4c00b6eead53ba9381bab12765b2c4ed98a61d1 (diff)
Revamp the client/server communication protocol so that it is portable to Windows.
Progress towards #930. -- MOS_MIGRATED_REVID=117799006
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/server/RPCTestingClient.java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/server/RPCTestingClient.java21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/server/RPCTestingClient.java b/src/test/java/com/google/devtools/build/lib/server/RPCTestingClient.java
index e24e0bb3ac..4a659a14f8 100644
--- a/src/test/java/com/google/devtools/build/lib/server/RPCTestingClient.java
+++ b/src/test/java/com/google/devtools/build/lib/server/RPCTestingClient.java
@@ -43,7 +43,7 @@ public class RPCTestingClient {
this.outErr = outErr;
}
- public ServerResponse sendRequest(String command, String... params)
+ public int sendRequest(String command, String... params)
throws Exception {
String request = command;
for (String param : params) {
@@ -52,24 +52,35 @@ public class RPCTestingClient {
return sendRequest(request);
}
- public ServerResponse sendRequest(String request) throws Exception {
+ public int sendRequest(String request) throws Exception {
LocalClientSocket connection = new LocalClientSocket();
connection.connect(new LocalSocketAddress(socketFile.getPathFile()));
try {
OutputStream out = connection.getOutputStream();
- out.write(request.getBytes(UTF_8));
+ byte[] requestBytes = request.getBytes(UTF_8);
+ byte[] requestLength = new byte[4];
+ requestLength[0] = (byte) (requestBytes.length << 24);
+ requestLength[1] = (byte) ((requestBytes.length << 16) & 0xff);
+ requestLength[2] = (byte) ((requestBytes.length << 8) & 0xff);
+ requestLength[3] = (byte) (requestBytes.length & 0xff);
+ out.write(requestLength);
+ out.write(requestBytes);
out.flush();
connection.shutdownOutput();
OutputStream stdout = outErr.getOutputStream();
OutputStream stderr = outErr.getErrorStream();
ByteArrayOutputStream control = new ByteArrayOutputStream();
- StreamDemultiplexer demux = new StreamDemultiplexer((byte) '1',
+ StreamDemultiplexer demux = new StreamDemultiplexer((byte) 1,
stdout, stderr, control);
ByteStreams.copy(connection.getInputStream(), demux);
demux.flush();
- return ServerResponse.parseFrom(control);
+ byte[] controlBytes = control.toByteArray();
+ return (((int) controlBytes[0]) << 24)
+ + (((int) controlBytes[1]) << 16)
+ + (((int) controlBytes[2]) << 8)
+ + ((int) controlBytes[3]);
} finally {
connection.close();
}