[NS B10] Cleanup : remove mRematchedNetworks
This is better computed by the code that applies the change than by the code that computes the reassignment Test: FrameworksNetTests Change-Id: I13e2764fd9b29145499085c3bb56de88a97d6c3c
This commit is contained in:
@@ -6512,23 +6512,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
}
|
}
|
||||||
|
|
||||||
// An accumulator class to gather the list of changes that result from a rematch.
|
// An accumulator class to gather the list of changes that result from a rematch.
|
||||||
// TODO : enrich to represent an entire set of changes to apply.
|
|
||||||
private static class NetworkReassignment {
|
private static class NetworkReassignment {
|
||||||
static class NetworkBgStatePair {
|
|
||||||
@NonNull final NetworkAgentInfo mNetwork;
|
|
||||||
final boolean mOldBackground;
|
|
||||||
NetworkBgStatePair(@NonNull final NetworkAgentInfo network,
|
|
||||||
final boolean oldBackground) {
|
|
||||||
mNetwork = network;
|
|
||||||
mOldBackground = oldBackground;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toString() {
|
|
||||||
return "[" + NetworkAgentInfo.toShortString(mNetwork)
|
|
||||||
+ " oldBg=" + mOldBackground + "]";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static class RequestReassignment {
|
static class RequestReassignment {
|
||||||
@NonNull public final NetworkRequestInfo mRequest;
|
@NonNull public final NetworkRequestInfo mRequest;
|
||||||
@Nullable public final NetworkAgentInfo mOldNetwork;
|
@Nullable public final NetworkAgentInfo mOldNetwork;
|
||||||
@@ -6548,13 +6532,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull private final Set<NetworkBgStatePair> mRematchedNetworks = new ArraySet<>();
|
|
||||||
@NonNull private final ArrayList<RequestReassignment> mReassignments = new ArrayList<>();
|
@NonNull private final ArrayList<RequestReassignment> mReassignments = new ArrayList<>();
|
||||||
|
|
||||||
@NonNull Iterable<NetworkBgStatePair> getRematchedNetworks() {
|
|
||||||
return mRematchedNetworks;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NonNull Iterable<RequestReassignment> getRequestReassignments() {
|
@NonNull Iterable<RequestReassignment> getRequestReassignments() {
|
||||||
return mReassignments;
|
return mReassignments;
|
||||||
}
|
}
|
||||||
@@ -6575,10 +6554,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
mReassignments.add(reassignment);
|
mReassignments.add(reassignment);
|
||||||
}
|
}
|
||||||
|
|
||||||
void addRematchedNetwork(@NonNull final NetworkBgStatePair network) {
|
|
||||||
mRematchedNetworks.add(network);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Will return null if this reassignment does not change the network assigned to
|
// Will return null if this reassignment does not change the network assigned to
|
||||||
// the passed request.
|
// the passed request.
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -6592,9 +6567,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
final StringJoiner sj = new StringJoiner(", " /* delimiter */,
|
final StringJoiner sj = new StringJoiner(", " /* delimiter */,
|
||||||
"NetReassign [" /* prefix */, "]" /* suffix */);
|
"NetReassign [" /* prefix */, "]" /* suffix */);
|
||||||
if (mRematchedNetworks.isEmpty() && mReassignments.isEmpty()) {
|
if (mReassignments.isEmpty()) return sj.add("no changes").toString();
|
||||||
return sj.add("no changes").toString();
|
|
||||||
}
|
|
||||||
for (final RequestReassignment rr : getRequestReassignments()) {
|
for (final RequestReassignment rr : getRequestReassignments()) {
|
||||||
sj.add(rr.toString());
|
sj.add(rr.toString());
|
||||||
}
|
}
|
||||||
@@ -6604,15 +6577,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
public String debugString() {
|
public String debugString() {
|
||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
sb.append("NetworkReassignment :");
|
sb.append("NetworkReassignment :");
|
||||||
if (mRematchedNetworks.isEmpty() && mReassignments.isEmpty()) {
|
if (mReassignments.isEmpty()) return sb.append(" no changes").toString();
|
||||||
return sb.append(" no changes").toString();
|
|
||||||
}
|
|
||||||
final StringJoiner sj = new StringJoiner(", " /* delimiter */,
|
|
||||||
"\n Rematched networks : " /* prefix */, "" /* suffix */);
|
|
||||||
for (final NetworkBgStatePair rr : mRematchedNetworks) {
|
|
||||||
sj.add(rr.mNetwork.toShortString());
|
|
||||||
}
|
|
||||||
sb.append(sj.toString());
|
|
||||||
for (final RequestReassignment rr : getRequestReassignments()) {
|
for (final RequestReassignment rr : getRequestReassignments()) {
|
||||||
sb.append("\n ").append(rr);
|
sb.append("\n ").append(rr);
|
||||||
}
|
}
|
||||||
@@ -6660,8 +6625,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
for (final NetworkAgentInfo nai : mNetworkAgentInfos.values()) {
|
for (final NetworkAgentInfo nai : mNetworkAgentInfos.values()) {
|
||||||
if (!nai.everConnected) continue;
|
if (!nai.everConnected) continue;
|
||||||
nais.add(nai);
|
nais.add(nai);
|
||||||
changes.addRematchedNetwork(new NetworkReassignment.NetworkBgStatePair(nai,
|
|
||||||
nai.isBackgroundNetwork()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (final NetworkRequestInfo nri : mNetworkRequests.values()) {
|
for (final NetworkRequestInfo nri : mNetworkRequests.values()) {
|
||||||
@@ -6694,6 +6657,15 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
|
|
||||||
private void applyNetworkReassignment(@NonNull final NetworkReassignment changes,
|
private void applyNetworkReassignment(@NonNull final NetworkReassignment changes,
|
||||||
final long now) {
|
final long now) {
|
||||||
|
final Collection<NetworkAgentInfo> nais = mNetworkAgentInfos.values();
|
||||||
|
|
||||||
|
// Since most of the time there are only 0 or 1 background networks, it would probably
|
||||||
|
// be more efficient to just use an ArrayList here. TODO : measure performance
|
||||||
|
final ArraySet<NetworkAgentInfo> oldBgNetworks = new ArraySet<>();
|
||||||
|
for (final NetworkAgentInfo nai : nais) {
|
||||||
|
if (nai.isBackgroundNetwork()) oldBgNetworks.add(nai);
|
||||||
|
}
|
||||||
|
|
||||||
// First, update the lists of satisfied requests in the network agents. This is necessary
|
// First, update the lists of satisfied requests in the network agents. This is necessary
|
||||||
// because some code later depends on this state to be correct, most prominently computing
|
// because some code later depends on this state to be correct, most prominently computing
|
||||||
// the linger status.
|
// the linger status.
|
||||||
@@ -6742,8 +6714,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final Collection<NetworkAgentInfo> nais = mNetworkAgentInfos.values();
|
|
||||||
|
|
||||||
// Update the linger state before processing listen callbacks, because the background
|
// Update the linger state before processing listen callbacks, because the background
|
||||||
// computation depends on whether the network is lingering. Don't send the LOSING callbacks
|
// computation depends on whether the network is lingering. Don't send the LOSING callbacks
|
||||||
// just yet though, because they have to be sent after the listens are processed to keep
|
// just yet though, because they have to be sent after the listens are processed to keep
|
||||||
@@ -6760,15 +6730,17 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (final NetworkReassignment.NetworkBgStatePair event : changes.getRematchedNetworks()) {
|
for (final NetworkAgentInfo nai : nais) {
|
||||||
|
if (!nai.everConnected) continue;
|
||||||
|
final boolean oldBackground = oldBgNetworks.contains(nai);
|
||||||
// Process listen requests and update capabilities if the background state has
|
// Process listen requests and update capabilities if the background state has
|
||||||
// changed for this network. For consistency with previous behavior, send onLost
|
// changed for this network. For consistency with previous behavior, send onLost
|
||||||
// callbacks before onAvailable.
|
// callbacks before onAvailable.
|
||||||
processNewlyLostListenRequests(event.mNetwork);
|
processNewlyLostListenRequests(nai);
|
||||||
if (event.mOldBackground != event.mNetwork.isBackgroundNetwork()) {
|
if (oldBackground != nai.isBackgroundNetwork()) {
|
||||||
applyBackgroundChangeForRematch(event.mNetwork);
|
applyBackgroundChangeForRematch(nai);
|
||||||
}
|
}
|
||||||
processNewlySatisfiedListenRequests(event.mNetwork);
|
processNewlySatisfiedListenRequests(nai);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (final NetworkAgentInfo nai : lingeredNetworks) {
|
for (final NetworkAgentInfo nai : lingeredNetworks) {
|
||||||
@@ -6859,9 +6831,11 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
// they may get old info. Reverse this after the old startUsing api is removed.
|
// they may get old info. Reverse this after the old startUsing api is removed.
|
||||||
// This is on top of the multiple intent sequencing referenced in the todo above.
|
// This is on top of the multiple intent sequencing referenced in the todo above.
|
||||||
for (NetworkAgentInfo nai : nais) {
|
for (NetworkAgentInfo nai : nais) {
|
||||||
|
if (nai.everConnected) {
|
||||||
addNetworkToLegacyTypeTracker(nai);
|
addNetworkToLegacyTypeTracker(nai);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void addNetworkToLegacyTypeTracker(@NonNull final NetworkAgentInfo nai) {
|
private void addNetworkToLegacyTypeTracker(@NonNull final NetworkAgentInfo nai) {
|
||||||
for (int i = 0; i < nai.numNetworkRequests(); i++) {
|
for (int i = 0; i < nai.numNetworkRequests(); i++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user