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

Commit c9ffb4e7 authored by Chalard Jean's avatar Chalard Jean
Browse files

[NS A07] Move the last side effects out of the decision loop.

This is a no-op. Reviewers : please scrutinize this for behavior
changes.

Test: ConnectivityServiceTest
Change-Id: Icc621f0a64a72dae0192843e6b6587ec4e31ea4d
parent c6784cc5
Loading
Loading
Loading
Loading
+33 −32
Original line number Diff line number Diff line
@@ -6366,21 +6366,33 @@ public class ConnectivityService extends IConnectivityManager.Stub
                }
                if (currentNetwork == null || currentNetwork.getCurrentScore() < score) {
                    reassignedRequests.put(nri, newNetwork);
                    if (VDBG) log("rematch for " + newNetwork.name());
                    if (currentNetwork != null) {
                }
            } else if (newNetwork.isSatisfyingRequest(nri.request.requestId)) {
                reassignedRequests.put(nri, null);
            }
        }

        for (final Map.Entry<NetworkRequestInfo, NetworkAgentInfo> entry :
                reassignedRequests.entrySet()) {
            final NetworkRequestInfo nri = entry.getKey();
            final NetworkAgentInfo previousSatisfier = nri.mSatisfier;
            final NetworkAgentInfo newSatisfier = entry.getValue();
            if (newSatisfier != null) {
                if (VDBG) log("rematch for " + newSatisfier.name());
                if (previousSatisfier != null) {
                    if (VDBG || DDBG) {
                            log("   accepting network in place of " + currentNetwork.name());
                        log("   accepting network in place of " + previousSatisfier.name());
                    }
                        currentNetwork.removeRequest(nri.request.requestId);
                        currentNetwork.lingerRequest(nri.request, now, mLingerDelayMs);
                        removedRequests.add(currentNetwork);
                    previousSatisfier.removeRequest(nri.request.requestId);
                    previousSatisfier.lingerRequest(nri.request, now, mLingerDelayMs);
                    removedRequests.add(previousSatisfier);
                } else {
                    if (VDBG || DDBG) log("   accepting network in place of null");
                }
                    newNetwork.unlingerRequest(nri.request);
                    nri.mSatisfier = newNetwork;
                    if (!newNetwork.addRequest(nri.request)) {
                        Slog.wtf(TAG, "BUG: " + newNetwork.name() + " already has " + nri.request);
                newSatisfier.unlingerRequest(nri.request);
                nri.mSatisfier = newSatisfier;
                if (!newSatisfier.addRequest(nri.request)) {
                    Slog.wtf(TAG, "BUG: " + newSatisfier.name() + " already has " + nri.request);
                }
                addedRequests.add(nri);
                keep = true;
@@ -6389,26 +6401,15 @@ public class ConnectivityService extends IConnectivityManager.Stub
                // TODO - this could get expensive if we have a lot of requests for this
                // network.  Think about if there is a way to reduce this.  Push
                // netid->request mapping to each factory?
                    sendUpdatedScoreToFactories(nri.request, newNetwork);
                sendUpdatedScoreToFactories(nri.request, newSatisfier);
                if (isDefaultRequest(nri)) {
                    isNewDefault = true;
                        oldDefaultNetwork = currentNetwork;
                        if (currentNetwork != null) {
                            mLingerMonitor.noteLingerDefaultNetwork(currentNetwork, newNetwork);
                        }
                    oldDefaultNetwork = previousSatisfier;
                    if (previousSatisfier != null) {
                        mLingerMonitor.noteLingerDefaultNetwork(previousSatisfier, newSatisfier);
                    }
                }
            } else if (newNetwork.isSatisfyingRequest(nri.request.requestId)) {
                reassignedRequests.put(nri, null);
            }
        }

        for (final Map.Entry<NetworkRequestInfo, NetworkAgentInfo> entry :
                reassignedRequests.entrySet()) {
            final NetworkRequestInfo nri = entry.getKey();
            final NetworkAgentInfo previousSatisfier = nri.mSatisfier;
            final NetworkAgentInfo newSatisfier = entry.getValue();
            if (newSatisfier == null) {
            } else {
                // If "newNetwork" is listed as satisfying "nri" but no longer satisfies "nri",
                // mark it as no longer satisfying "nri".  Because networks are processed by
                // rematchAllNetworksAndRequests() in descending score order, "currentNetwork" will