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
This commit is contained in:
@@ -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();
|
||||
final int score;
|
||||
final int serial;
|
||||
if (nai != null) {
|
||||
score = nai.getCurrentScore();
|
||||
serial = nai.factorySerialNumber;
|
||||
} else {
|
||||
score = 0;
|
||||
serial = NetworkProvider.ID_NONE;
|
||||
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 (null != nai) {
|
||||
score = nai.getCurrentScore();
|
||||
serial = nai.factorySerialNumber;
|
||||
} else {
|
||||
score = 0;
|
||||
serial = NetworkProvider.ID_NONE;
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
npi.requestNetwork(nri.request, score, serial);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user