aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Dorokhine <adorokhine@google.com>2016-12-14 18:02:24 -0800
committeradorokhine <adorokhine@google.com>2016-12-14 18:19:36 -0800
commitb8c7be8f07c7bec553177ebffb88d0ed058079cb (patch)
treea87ba71b26e58366c35a6a91891e54fc60509e0e
parente015bd31a28efe6c04b9f2d691b0eaba9d823f8e (diff)
downloadmobly-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.java29
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;
- }
}
}