NativeDaemonConnector: Add a convenience method for obtaining lists
Signed-off-by: San Mehat <san@google.com>
This commit is contained in:
@@ -201,6 +201,9 @@ final class NativeDaemonConnector implements Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Issue a command to the native daemon and return the responses
|
||||||
|
*/
|
||||||
public synchronized ArrayList<String> doCommand(String cmd) throws IllegalStateException {
|
public synchronized ArrayList<String> doCommand(String cmd) throws IllegalStateException {
|
||||||
sendCommand(cmd);
|
sendCommand(cmd);
|
||||||
|
|
||||||
@@ -236,4 +239,38 @@ final class NativeDaemonConnector implements Runnable {
|
|||||||
}
|
}
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Issues a list command and returns the cooked list
|
||||||
|
*/
|
||||||
|
public String[] doListCommand(String cmd, int expectedResponseCode)
|
||||||
|
throws IllegalStateException {
|
||||||
|
|
||||||
|
ArrayList<String> rsp = doCommand(cmd);
|
||||||
|
String[] rdata = new String[rsp.size()-1];
|
||||||
|
int idx = 0;
|
||||||
|
|
||||||
|
for (String line : rsp) {
|
||||||
|
try {
|
||||||
|
String[] tok = line.split(" ");
|
||||||
|
int code = Integer.parseInt(tok[0]);
|
||||||
|
if (code == expectedResponseCode) {
|
||||||
|
if (tok.length !=2) {
|
||||||
|
throw new IllegalStateException(
|
||||||
|
String.format("Malformatted list entry '%s'", line));
|
||||||
|
}
|
||||||
|
rdata[idx++] = tok[1];
|
||||||
|
} else if (code == NativeDaemonConnector.ResponseCode.CommandOkay) {
|
||||||
|
return rdata;
|
||||||
|
} else {
|
||||||
|
throw new IllegalStateException(
|
||||||
|
String.format("Expected list response %d, but got %d",
|
||||||
|
expectedResponseCode, code));
|
||||||
|
}
|
||||||
|
} catch (NumberFormatException nfe) {
|
||||||
|
throw new IllegalStateException(String.format("Error reading code '%s'", line));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw new IllegalStateException("Got an empty response");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user