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

Commit ac96c523 authored by Robert Greenwalt's avatar Robert Greenwalt
Browse files

Report new network scores back to factories.

This is a first order approx of what we want - should probably be good enough in most cases.

bug:15277751

Change-Id: I10e3b25f6ad5c7e022ba966ed514d4e6a999180d
parent 441eccc3
Loading
Loading
Loading
Loading
+25 −4
Original line number Diff line number Diff line
@@ -3100,7 +3100,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
                        break;
                    }
                    Integer score = (Integer) msg.obj;
                    updateNetworkScore(nai, score);
                    if (score != null) updateNetworkScore(nai, score.intValue());
                    break;
                }
                case NetworkMonitor.EVENT_NETWORK_VALIDATED: {
@@ -5911,9 +5911,30 @@ public class ConnectivityService extends IConnectivityManager.Stub {
        }
    }

    private void updateNetworkScore(NetworkAgentInfo nai, Integer scoreInteger) {
        int score = scoreInteger.intValue();
        // TODO
    private void updateNetworkScore(NetworkAgentInfo nai, int score) {
        if (DBG) log("updateNetworkScore for " + nai.name() + " to " + score);

        nai.currentScore = score;

        // TODO - This will not do the right thing if this network is lowering
        // its score and has requests that can be served by other
        // currently-active networks, or if the network is increasing its
        // score and other networks have requests that can be better served
        // by this network.
        //
        // Really we want to see if any of our requests migrate to other
        // active/lingered networks and if any other requests migrate to us (depending
        // on increasing/decreasing currentScore.  That's a bit of work and probably our
        // score checking/network allocation code needs to be modularized so we can understand
        // (see handleConnectionValided for an example).
        //
        // As a first order approx, lets just advertise the new score to factories.  If
        // somebody can beat it they will nominate a network and our normal net replacement
        // code will fire.
        for (int i = 0; i < nai.networkRequests.size(); i++) {
            NetworkRequest nr = nai.networkRequests.valueAt(i);
            sendUpdatedScoreToFactories(nr, score);
        }
    }

    // notify only this one new request of the current state