Merge "Refactor NetworkFactoryInfo to hide implementation details."
am: fd21b50332
Change-Id: Ide91a79a0d817efe408b9f85860178c9975a63bd
This commit is contained in:
@@ -3022,25 +3022,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
if (msg.arg1 == AsyncChannel.STATUS_SUCCESSFUL) {
|
if (msg.arg1 == AsyncChannel.STATUS_SUCCESSFUL) {
|
||||||
if (VDBG) log("NetworkFactory connected");
|
if (VDBG) log("NetworkFactory connected");
|
||||||
// Finish setting up the full connection
|
// Finish setting up the full connection
|
||||||
mNetworkFactoryInfos.get(msg.replyTo).asyncChannel.sendMessage(
|
NetworkFactoryInfo nfi = mNetworkFactoryInfos.get(msg.replyTo);
|
||||||
AsyncChannel.CMD_CHANNEL_FULL_CONNECTION);
|
nfi.completeConnection();
|
||||||
// A network factory has connected. Send it all current NetworkRequests.
|
sendAllRequestsToFactory(nfi);
|
||||||
for (NetworkRequestInfo nri : mNetworkRequests.values()) {
|
|
||||||
if (nri.request.isListen()) continue;
|
|
||||||
ensureRunningOnConnectivityServiceThread();
|
|
||||||
NetworkAgentInfo nai = nri.mSatisfier;
|
|
||||||
final int score;
|
|
||||||
final int serial;
|
|
||||||
if (nai != null) {
|
|
||||||
score = nai.getCurrentScore();
|
|
||||||
serial = nai.factorySerialNumber;
|
|
||||||
} else {
|
|
||||||
score = 0;
|
|
||||||
serial = NetworkFactory.SerialNumber.NONE;
|
|
||||||
}
|
|
||||||
ac.sendMessage(android.net.NetworkFactory.CMD_REQUEST_NETWORK, score, serial,
|
|
||||||
nri.request);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
loge("Error connecting NetworkFactory");
|
loge("Error connecting NetworkFactory");
|
||||||
mNetworkFactoryInfos.remove(msg.obj);
|
mNetworkFactoryInfos.remove(msg.obj);
|
||||||
@@ -3423,8 +3407,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (NetworkFactoryInfo nfi : mNetworkFactoryInfos.values()) {
|
for (NetworkFactoryInfo nfi : mNetworkFactoryInfos.values()) {
|
||||||
nfi.asyncChannel.sendMessage(android.net.NetworkFactory.CMD_CANCEL_REQUEST,
|
nfi.cancelRequest(nri.request);
|
||||||
nri.request);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// listens don't have a singular affectedNetwork. Check all networks to see
|
// listens don't have a singular affectedNetwork. Check all networks to see
|
||||||
@@ -4920,16 +4903,33 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
private static class NetworkFactoryInfo {
|
private static class NetworkFactoryInfo {
|
||||||
public final String name;
|
public final String name;
|
||||||
public final Messenger messenger;
|
public final Messenger messenger;
|
||||||
public final AsyncChannel asyncChannel;
|
private final AsyncChannel mAsyncChannel;
|
||||||
public final int factorySerialNumber;
|
public final int factorySerialNumber;
|
||||||
|
|
||||||
NetworkFactoryInfo(String name, Messenger messenger, AsyncChannel asyncChannel,
|
NetworkFactoryInfo(String name, Messenger messenger, AsyncChannel asyncChannel,
|
||||||
int factorySerialNumber) {
|
int factorySerialNumber) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.messenger = messenger;
|
this.messenger = messenger;
|
||||||
this.asyncChannel = asyncChannel;
|
this.mAsyncChannel = asyncChannel;
|
||||||
this.factorySerialNumber = factorySerialNumber;
|
this.factorySerialNumber = factorySerialNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void requestNetwork(NetworkRequest request, int score, int servingSerialNumber) {
|
||||||
|
mAsyncChannel.sendMessage(android.net.NetworkFactory.CMD_REQUEST_NETWORK, score,
|
||||||
|
servingSerialNumber, request);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cancelRequest(NetworkRequest request) {
|
||||||
|
mAsyncChannel.sendMessage(android.net.NetworkFactory.CMD_CANCEL_REQUEST, request);
|
||||||
|
}
|
||||||
|
|
||||||
|
void connect(Context context, Handler handler) {
|
||||||
|
mAsyncChannel.connect(context, handler, messenger);
|
||||||
|
}
|
||||||
|
|
||||||
|
void completeConnection() {
|
||||||
|
mAsyncChannel.sendMessage(AsyncChannel.CMD_CHANNEL_FULL_CONNECTION);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ensureNetworkRequestHasType(NetworkRequest request) {
|
private void ensureNetworkRequestHasType(NetworkRequest request) {
|
||||||
@@ -5318,7 +5318,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
private void handleRegisterNetworkFactory(NetworkFactoryInfo nfi) {
|
private void handleRegisterNetworkFactory(NetworkFactoryInfo nfi) {
|
||||||
if (DBG) log("Got NetworkFactory Messenger for " + nfi.name);
|
if (DBG) log("Got NetworkFactory Messenger for " + nfi.name);
|
||||||
mNetworkFactoryInfos.put(nfi.messenger, nfi);
|
mNetworkFactoryInfos.put(nfi.messenger, nfi);
|
||||||
nfi.asyncChannel.connect(mContext, mTrackerHandler, nfi.messenger);
|
nfi.connect(mContext, mTrackerHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -5954,8 +5954,26 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
log("sending new Min Network Score(" + score + "): " + networkRequest.toString());
|
log("sending new Min Network Score(" + score + "): " + networkRequest.toString());
|
||||||
}
|
}
|
||||||
for (NetworkFactoryInfo nfi : mNetworkFactoryInfos.values()) {
|
for (NetworkFactoryInfo nfi : mNetworkFactoryInfos.values()) {
|
||||||
nfi.asyncChannel.sendMessage(android.net.NetworkFactory.CMD_REQUEST_NETWORK, score,
|
nfi.requestNetwork(networkRequest, score, serial);
|
||||||
serial, networkRequest);
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Sends all current NetworkRequests to the specified factory. */
|
||||||
|
private void sendAllRequestsToFactory(NetworkFactoryInfo nfi) {
|
||||||
|
ensureRunningOnConnectivityServiceThread();
|
||||||
|
for (NetworkRequestInfo nri : mNetworkRequests.values()) {
|
||||||
|
if (nri.request.isListen()) continue;
|
||||||
|
NetworkAgentInfo nai = nri.mSatisfier;
|
||||||
|
final int score;
|
||||||
|
final int serial;
|
||||||
|
if (nai != null) {
|
||||||
|
score = nai.getCurrentScore();
|
||||||
|
serial = nai.factorySerialNumber;
|
||||||
|
} else {
|
||||||
|
score = 0;
|
||||||
|
serial = NetworkFactory.SerialNumber.NONE;
|
||||||
|
}
|
||||||
|
nfi.requestNetwork(nri.request, score, serial);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user