diff options
| author | 2020-02-17 02:49:34 +0000 | |
|---|---|---|
| committer | 2020-02-17 02:49:34 +0000 | |
| commit | 922e1feecd777898013a1ca18e023c41e6591c96 (patch) | |
| tree | 70e5c3c6331c6e175662818e2aded254881fa834 | |
| parent | 38c4fcf917704b5faae4894e358739e850e735ac (diff) | |
| parent | 48c3f95878194461cd05f305d9cc9f052acadc1f (diff) | |
Merge "[NS D01] Remove candidates that don't satisfy the request."
| -rw-r--r-- | services/core/java/com/android/server/connectivity/NetworkRanker.java | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/connectivity/NetworkRanker.java b/services/core/java/com/android/server/connectivity/NetworkRanker.java index d0aabf95d572..1ae7dc5c3676 100644 --- a/services/core/java/com/android/server/connectivity/NetworkRanker.java +++ b/services/core/java/com/android/server/connectivity/NetworkRanker.java @@ -20,6 +20,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.net.NetworkRequest; +import java.util.ArrayList; import java.util.Collection; /** @@ -31,15 +32,15 @@ public class NetworkRanker { /** * Find the best network satisfying this request among the list of passed networks. */ - // Almost equivalent to Collections.max(nais), but allows returning null if no network - // satisfies the request. @Nullable public NetworkAgentInfo getBestNetwork(@NonNull final NetworkRequest request, @NonNull final Collection<NetworkAgentInfo> nais) { + final ArrayList<NetworkAgentInfo> candidates = new ArrayList<>(nais); + candidates.removeIf(nai -> !nai.satisfies(request)); + NetworkAgentInfo bestNetwork = null; int bestScore = Integer.MIN_VALUE; - for (final NetworkAgentInfo nai : nais) { - if (!nai.satisfies(request)) continue; + for (final NetworkAgentInfo nai : candidates) { if (nai.getCurrentScore() > bestScore) { bestNetwork = nai; bestScore = nai.getCurrentScore(); |