Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 220f4b84 authored by Daichi Hirono's avatar Daichi Hirono Committed by Android (Google) Code Review
Browse files

Merge "Add capability to receive FD with NativeDaemonConnector."

parents 89eac2c6 dda65521
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -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 + "}");

+10 −3
Original line number Diff line number Diff line
@@ -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);
    }

    /**