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

Commit 2c7da55f authored by Sudheer Shanka's avatar Sudheer Shanka
Browse files

Pass in a new instance supplier for creating RingBuffer.

Bug: 317897994
Test: manual
Change-Id: I96329b87ea52de04a786d99cc33596e003061802
parent f1699296
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -42,7 +42,6 @@ import android.util.ArraySet;
import android.util.Log;
import android.util.Slog;

import com.android.internal.annotations.Keep;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.RingBuffer;
import com.android.server.am.ProcessList;
@@ -414,7 +413,7 @@ public class NetworkPolicyLogger {
        private static final Date sDate = new Date();

        public LogBuffer(int capacity) {
            super(Data.class, capacity);
            super(Data::new, Data[]::new, capacity);
        }

        public void uidStateChanged(int uid, int procState, long procStateSeq,
@@ -690,12 +689,8 @@ public class NetworkPolicyLogger {

    /**
     * Container class for all networkpolicy events data.
     *
     * Note: This class needs to be public for RingBuffer class to be able to create
     * new instances of this.
     */
    @Keep
    public static final class Data {
    private static final class Data {
        public int type;
        public long timeStamp;

+10 −10
Original line number Diff line number Diff line
@@ -35,11 +35,13 @@ import android.util.Slog;
import android.util.TimeUtils;

import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.Keep;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.RingBuffer;
import com.android.server.usage.BroadcastResponseStatsTracker.NotificationEventType;

import java.util.function.IntFunction;
import java.util.function.Supplier;

public class BroadcastResponseStatsLogger {

    private static final int MAX_LOG_SIZE =
@@ -49,10 +51,10 @@ public class BroadcastResponseStatsLogger {

    @GuardedBy("mLock")
    private final LogBuffer mBroadcastEventsBuffer = new LogBuffer(
            BroadcastEvent.class, MAX_LOG_SIZE);
            BroadcastEvent::new, BroadcastEvent[]::new, MAX_LOG_SIZE);
    @GuardedBy("mLock")
    private final LogBuffer mNotificationEventsBuffer = new LogBuffer(
            NotificationEvent.class, MAX_LOG_SIZE);
            NotificationEvent::new, NotificationEvent[]::new, MAX_LOG_SIZE);

    void logBroadcastDispatchEvent(int sourceUid, @NonNull String targetPackage,
            UserHandle targetUser, long idForResponseEvent,
@@ -96,8 +98,8 @@ public class BroadcastResponseStatsLogger {

    private static final class LogBuffer<T extends Data> extends RingBuffer<T> {

        LogBuffer(Class<T> classType, int capacity) {
            super(classType, capacity);
        LogBuffer(Supplier<T> newItem, IntFunction<T[]> newBacking, int capacity) {
            super(newItem, newBacking, capacity);
        }

        void logBroadcastDispatchEvent(int sourceUid, @NonNull String targetPackage,
@@ -179,8 +181,7 @@ public class BroadcastResponseStatsLogger {
        }
    }

    @Keep
    public static final class BroadcastEvent implements Data {
    private static final class BroadcastEvent implements Data {
        public int sourceUid;
        public int targetUserId;
        public int targetUidProcessState;
@@ -200,8 +201,7 @@ public class BroadcastResponseStatsLogger {
        }
    }

    @Keep
    public static final class NotificationEvent implements Data {
    private static final class NotificationEvent implements Data {
        public int type;
        public String packageName;
        public int userId;
@@ -218,7 +218,7 @@ public class BroadcastResponseStatsLogger {
        }
    }

    public interface Data {
    private interface Data {
        void reset();
    }
}