summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Daichi Hirono <hirono@google.com> 2015-11-19 16:58:57 +0900
committer Daichi Hirono <hirono@google.com> 2015-12-04 14:16:00 +0900
commitdda655210fea87f0e4d64333891a376c2de3f8a6 (patch)
tree4e92007d30fa98b492f7065e096c4c5de2b89f72
parent56e086f5da39e64240464cad2a260f3e9389d939 (diff)
Add capability to receive FD with NativeDaemonConnector.
BUG=25755372 Change-Id: I2888219b77cf04f4bf749d5518ff62ba16258f2d
-rw-r--r--services/core/java/com/android/server/NativeDaemonConnector.java6
-rw-r--r--services/core/java/com/android/server/NativeDaemonEvent.java13
2 files changed, 14 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/NativeDaemonConnector.java b/services/core/java/com/android/server/NativeDaemonConnector.java
index e6b6074abf9c..d6dbad87b060 100644
--- a/services/core/java/com/android/server/NativeDaemonConnector.java
+++ b/services/core/java/com/android/server/NativeDaemonConnector.java
@@ -177,6 +177,7 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
mCallbacks.onDaemonConnected();
+ FileDescriptor[] fdList = null;
byte[] buffer = new byte[BUFFER_SIZE];
int start = 0;
@@ -186,6 +187,7 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
loge("got " + count + " reading with start = " + start);
break;
}
+ fdList = socket.getAncillaryFileDescriptors();
// Add our starting point to the count and reset the start.
count += start;
@@ -200,8 +202,8 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
boolean releaseWl = false;
try {
- final NativeDaemonEvent event = NativeDaemonEvent.parseRawEvent(
- rawEvent);
+ final NativeDaemonEvent event =
+ NativeDaemonEvent.parseRawEvent(rawEvent, fdList);
log("RCV <- {" + event + "}");
diff --git a/services/core/java/com/android/server/NativeDaemonEvent.java b/services/core/java/com/android/server/NativeDaemonEvent.java
index 4e61c0b09de4..e6feda3dad22 100644
--- a/services/core/java/com/android/server/NativeDaemonEvent.java
+++ b/services/core/java/com/android/server/NativeDaemonEvent.java
@@ -19,6 +19,7 @@ package com.android.server;
import android.util.Slog;
import com.google.android.collect.Lists;
+import java.io.FileDescriptor;
import java.util.ArrayList;
/**
@@ -35,15 +36,17 @@ public class NativeDaemonEvent {
private final String mRawEvent;
private final String mLogMessage;
private String[] mParsed;
+ private FileDescriptor[] mFdList;
private NativeDaemonEvent(int cmdNumber, int code, String message,
- String rawEvent, String logMessage) {
+ String rawEvent, String logMessage, FileDescriptor[] fdList) {
mCmdNumber = cmdNumber;
mCode = code;
mMessage = message;
mRawEvent = rawEvent;
mLogMessage = logMessage;
mParsed = null;
+ mFdList = fdList;
}
static public final String SENSITIVE_MARKER = "{{sensitive}}";
@@ -60,6 +63,10 @@ public class NativeDaemonEvent {
return mMessage;
}
+ public FileDescriptor[] getFileDescriptors() {
+ return mFdList;
+ }
+
@Deprecated
public String getRawEvent() {
return mRawEvent;
@@ -127,7 +134,7 @@ public class NativeDaemonEvent {
* @throws IllegalArgumentException when line doesn't match format expected
* from native side.
*/
- public static NativeDaemonEvent parseRawEvent(String rawEvent) {
+ public static NativeDaemonEvent parseRawEvent(String rawEvent, FileDescriptor[] fdList) {
final String[] parsed = rawEvent.split(" ");
if (parsed.length < 2) {
throw new IllegalArgumentException("Insufficient arguments");
@@ -164,7 +171,7 @@ public class NativeDaemonEvent {
final String message = rawEvent.substring(skiplength);
- return new NativeDaemonEvent(cmdNumber, code, message, rawEvent, logMessage);
+ return new NativeDaemonEvent(cmdNumber, code, message, rawEvent, logMessage, fdList);
}
/**