summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorRobert Greenwalt <rgreenwalt@google.com>2012-03-13 14:13:07 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-03-13 14:13:07 -0700
commit8e94c25f5d7392f299de3b67c49e847cdd103551 (patch)
tree6902558c2696a844c9308879ef9ef9856538cb7f /services
parent1c1d1e7ed7ed2673b22642c6701659146ceaa602 (diff)
parentd192598d3e7c6f38fc9deb573b06ababa56d741a (diff)
downloadframeworks_base-8e94c25f5d7392f299de3b67c49e847cdd103551.zip
frameworks_base-8e94c25f5d7392f299de3b67c49e847cdd103551.tar.gz
frameworks_base-8e94c25f5d7392f299de3b67c49e847cdd103551.tar.bz2
Merge "Record the trimmed cmd string for logs"
Diffstat (limited to 'services')
-rw-r--r--services/java/com/android/server/NativeDaemonConnector.java71
1 files changed, 31 insertions, 40 deletions
diff --git a/services/java/com/android/server/NativeDaemonConnector.java b/services/java/com/android/server/NativeDaemonConnector.java
index 6593a0f..0b5eaff 100644
--- a/services/java/com/android/server/NativeDaemonConnector.java
+++ b/services/java/com/android/server/NativeDaemonConnector.java
@@ -200,17 +200,15 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
/**
* Make command for daemon, escaping arguments as needed.
- *
- * @return the final command.
*/
- private StringBuilder makeCommand(String cmd, Object... args)
+ private void makeCommand(StringBuilder builder, String cmd, Object... args)
throws NativeDaemonConnectorException {
// TODO: eventually enforce that cmd doesn't contain arguments
if (cmd.indexOf('\0') >= 0) {
throw new IllegalArgumentException("unexpected command: " + cmd);
}
- final StringBuilder builder = new StringBuilder(cmd);
+ builder.append(cmd);
for (Object arg : args) {
final String argString = String.valueOf(arg);
if (argString.indexOf('\0') >= 0) {
@@ -220,34 +218,6 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
builder.append(' ');
appendEscaped(builder, argString);
}
-
- return builder;
- }
-
- private int sendCommand(StringBuilder builder)
- throws NativeDaemonConnectorException {
-
- int sequenceNumber = mSequenceNumber.incrementAndGet();
-
- builder.insert(0, Integer.toString(sequenceNumber) + " ");
-
- log("SND -> {" + builder.toString() + "}");
-
- builder.append('\0');
-
- synchronized (mDaemonLock) {
- if (mOutputStream == null) {
- throw new NativeDaemonConnectorException("missing output stream");
- } else {
- try {
- mOutputStream.write(builder.toString().getBytes(Charsets.UTF_8));
- } catch (IOException e) {
- throw new NativeDaemonConnectorException("problem sending command", e);
- }
- }
- }
-
- return sequenceNumber;
}
/**
@@ -325,25 +295,46 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
public NativeDaemonEvent[] execute(int timeout, String cmd, Object... args)
throws NativeDaemonConnectorException {
final ArrayList<NativeDaemonEvent> events = Lists.newArrayList();
- final StringBuilder sentCommand = makeCommand(cmd, args);
- final int cmdNumber = sendCommand(sentCommand);
+
+ final int sequenceNumber = mSequenceNumber.incrementAndGet();
+ final StringBuilder cmdBuilder =
+ new StringBuilder(Integer.toString(sequenceNumber)).append(' ');
+
+ makeCommand(cmdBuilder, cmd, args);
+
+ final String logCmd = cmdBuilder.toString(); /* includes cmdNum, cmd, args */
+ log("SND -> {" + logCmd + "}");
+
+ cmdBuilder.append('\0');
+ final String sentCmd = cmdBuilder.toString(); /* logCmd + \0 */
+
+ synchronized (mDaemonLock) {
+ if (mOutputStream == null) {
+ throw new NativeDaemonConnectorException("missing output stream");
+ } else {
+ try {
+ mOutputStream.write(sentCmd.getBytes(Charsets.UTF_8));
+ } catch (IOException e) {
+ throw new NativeDaemonConnectorException("problem sending command", e);
+ }
+ }
+ }
NativeDaemonEvent event = null;
- cmd = sentCommand.toString();
do {
- event = mResponseQueue.remove(cmdNumber, timeout, cmd);
+ event = mResponseQueue.remove(sequenceNumber, timeout, sentCmd);
if (event == null) {
- loge("timed-out waiting for response to " + cmdNumber + " " + cmd);
- throw new NativeDaemonFailureException(cmd, event);
+ loge("timed-out waiting for response to " + logCmd);
+ throw new NativeDaemonFailureException(logCmd, event);
}
events.add(event);
} while (event.isClassContinue());
if (event.isClassClientError()) {
- throw new NativeDaemonArgumentException(cmd, event);
+ throw new NativeDaemonArgumentException(logCmd, event);
}
if (event.isClassServerError()) {
- throw new NativeDaemonFailureException(cmd, event);
+ throw new NativeDaemonFailureException(logCmd, event);
}
return events.toArray(new NativeDaemonEvent[events.size()]);