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

Commit 46ac0539 authored by James Mattis's avatar James Mattis
Browse files

Update to sendAllRequestsToProvider for Multilayer

Updates to ConnectivityService.sendAllRequestsToProvider to support
Multilayer requests.

Bug: 175051182
Bug: 171991028
Test: atest FrameworksNetTests
atest FrameworksNetIntegrationTests
atest CtsNetTestCasesLatestSdk

Change-Id: Id7a6175cee28d2de1f6194cd0fc8c739d667427d
parent df956539
Loading
Loading
Loading
Loading
+27 −13
Original line number Diff line number Diff line
@@ -6945,21 +6945,35 @@ public class ConnectivityService extends IConnectivityManager.Stub
    }

    /** Sends all current NetworkRequests to the specified factory. */
    private void sendAllRequestsToProvider(NetworkProviderInfo npi) {
    private void sendAllRequestsToProvider(@NonNull final NetworkProviderInfo npi) {
        ensureRunningOnConnectivityServiceThread();
        for (NetworkRequestInfo nri : mNetworkRequests.values()) {
            if (nri.request.isListen()) continue;
            NetworkAgentInfo nai = nri.getSatisfier();
        for (final NetworkRequestInfo nri : getNrisFromGlobalRequests()) {
            for (final NetworkRequest req : nri.mRequests) {
                if (req.isListen() && nri.getActiveRequest() == req) {
                    break;
                }
                if (req.isListen()) {
                    continue;
                }
                // Only set the nai for the request it is satisfying.
                final NetworkAgentInfo nai =
                        nri.getActiveRequest() == req ? nri.getSatisfier() : null;
                final int score;
                final int serial;
            if (nai != null) {
                if (null != nai) {
                    score = nai.getCurrentScore();
                    serial = nai.factorySerialNumber;
                } else {
                    score = 0;
                    serial = NetworkProvider.ID_NONE;
                }
            npi.requestNetwork(nri.request, score, serial);
                npi.requestNetwork(req, score, serial);
                // For multilayer requests, don't send lower priority requests if a higher priority
                // request is already satisfied.
                if (null != nai) {
                    break;
                }
            }
        }
    }