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

Commit d671fefe authored by Junyu Lai's avatar Junyu Lai Committed by Automerger Merge Worker
Browse files

Merge "Fix multipathPolicyTracker query-update loop" am: 8e2a6f76 am:...

Merge "Fix multipathPolicyTracker query-update loop" am: 8e2a6f76 am: 7b28c1b5 am: fd4f9f07 am: e0570964

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1951481

Change-Id: I0b1240d76b7090e8588bf92ecc84c34f7933f388
parents 687199f7 e0570964
Loading
Loading
Loading
Loading
+9 −2
Original line number Original line Diff line number Diff line
@@ -199,6 +199,7 @@ public class MultipathPolicyTracker {
        private final NetworkTemplate mNetworkTemplate;
        private final NetworkTemplate mNetworkTemplate;
        private final UsageCallback mUsageCallback;
        private final UsageCallback mUsageCallback;
        private NetworkCapabilities mNetworkCapabilities;
        private NetworkCapabilities mNetworkCapabilities;
        private final NetworkStatsManager mStatsManager;


        public MultipathTracker(Network network, NetworkCapabilities nc) {
        public MultipathTracker(Network network, NetworkCapabilities nc) {
            this.network = network;
            this.network = network;
@@ -238,6 +239,13 @@ public class MultipathPolicyTracker {
                    updateMultipathBudget();
                    updateMultipathBudget();
                }
                }
            };
            };
            mStatsManager = mContext.getSystemService(NetworkStatsManager.class);
            // Query stats from NetworkStatsService will trigger a poll by default.
            // But since MultipathPolicyTracker listens NPMS events that triggered by
            // stats updated event, and will query stats
            // after the event. A polling -> updated -> query -> polling loop will be introduced
            // if polls on open. Hence, set flag to false to prevent a polling loop.
            mStatsManager.setPollOnOpen(false);


            updateMultipathBudget();
            updateMultipathBudget();
        }
        }
@@ -262,8 +270,7 @@ public class MultipathPolicyTracker {
        private long getNetworkTotalBytes(long start, long end) {
        private long getNetworkTotalBytes(long start, long end) {
            try {
            try {
                final android.app.usage.NetworkStats.Bucket ret =
                final android.app.usage.NetworkStats.Bucket ret =
                        mContext.getSystemService(NetworkStatsManager.class)
                        mStatsManager.querySummaryForDevice(mNetworkTemplate, start, end);
                        .querySummaryForDevice(mNetworkTemplate, start, end);
                return ret.getRxBytes() + ret.getTxBytes();
                return ret.getRxBytes() + ret.getTxBytes();
            } catch (RuntimeException e) {
            } catch (RuntimeException e) {
                Log.w(TAG, "Failed to get data usage: " + e);
                Log.w(TAG, "Failed to get data usage: " + e);