diff options
author | Alexander Dorokhine <adorokhine@google.com> | 2016-12-14 18:02:24 -0800 |
---|---|---|
committer | adorokhine <adorokhine@google.com> | 2016-12-14 18:19:36 -0800 |
commit | b8c7be8f07c7bec553177ebffb88d0ed058079cb (patch) | |
tree | a87ba71b26e58366c35a6a91891e54fc60509e0e | |
parent | e015bd31a28efe6c04b9f2d691b0eaba9d823f8e (diff) | |
download | mobly-snippet-lib-b8c7be8f07c7bec553177ebffb88d0ed058079cb.tar.gz |
Fix handling of closeSl4aSession by writing an empty RPC result.
Without this change, calling closeSl4aSession always gave an error
because the socket would be torn down without any response being received.
Not an issue with upstream sl4a because there is an RPC to implement
closeSl4aSession() which produces its own result.
-rw-r--r-- | third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonRpcServer.java | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonRpcServer.java b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonRpcServer.java index 398dc3f..a2af78b 100644 --- a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonRpcServer.java +++ b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonRpcServer.java @@ -33,8 +33,8 @@ import org.json.JSONObject; * A JSON RPC server that forwards RPC calls to a specified receiver object. */ public class JsonRpcServer extends SimpleServer { - private static final String CMD_CLOSE_SESSION = "closeSl4aSession"; + private static final String CMD_HELP = "help"; private final SnippetManagerFactory mSnippetManagerFactory; @@ -81,9 +81,22 @@ public class JsonRpcServer extends SimpleServer { String method = request.getString("method"); JSONArray params = request.getJSONArray("params"); - if (method.equals("help")) { + // Handle builtin commands + if (method.equals(CMD_HELP)) { help(writer, id, receiverManager, UID); continue; + } else if (method.equals(CMD_CLOSE_SESSION)) { + Log.d("Got shutdown signal"); + send(writer, JsonRpcResult.empty(id), UID); + synchronized (writer) { + receiverManager.shutdown(); + reader.close(); + writer.close(); + sock.close(); + shutdown(); + mgrs.remove(UID); + } + return; } MethodDescriptor rpc = receiverManager.getMethodDescriptor(method); @@ -97,18 +110,6 @@ public class JsonRpcServer extends SimpleServer { Log.e("Invocation error.", t); send(writer, JsonRpcResult.error(id, t), UID); } - if (method.equals(CMD_CLOSE_SESSION)) { - Log.d("Got shutdown signal"); - synchronized (writer) { - receiverManager.shutdown(); - reader.close(); - writer.close(); - sock.close(); - shutdown(); - mgrs.remove(UID); - } - return; - } } } |