Add a setTeardownDelayMs API to NetworkAgent.
This allows transports to request that when the network is disconnected, the system should delay destroying the native network until the specified time has passed after the network disconnected. Bug: 181941583 Test: next CL in the stack Change-Id: I9765f1c9d1e55c23c6d583d6709dbe06505975b1
This commit is contained in:
@@ -47,5 +47,5 @@ oneway interface INetworkAgent {
|
||||
void onQosFilterCallbackRegistered(int qosCallbackId, in QosFilterParcelable filterParcel);
|
||||
void onQosCallbackUnregistered(int qosCallbackId);
|
||||
void onNetworkCreated();
|
||||
void onNetworkDisconnected();
|
||||
void onNetworkDestroyed();
|
||||
}
|
||||
|
||||
@@ -41,4 +41,5 @@ oneway interface INetworkAgentRegistry {
|
||||
void sendNrQosSessionAvailable(int callbackId, in QosSession session, in NrQosSessionAttributes attributes);
|
||||
void sendQosSessionLost(int qosCallbackId, in QosSession session);
|
||||
void sendQosCallbackError(int qosCallbackId, int exceptionType);
|
||||
void sendTeardownDelayMs(int teardownDelayMs);
|
||||
}
|
||||
|
||||
@@ -184,6 +184,20 @@ public abstract class NetworkAgent {
|
||||
*/
|
||||
public static final int EVENT_UNDERLYING_NETWORKS_CHANGED = BASE + 5;
|
||||
|
||||
/**
|
||||
* Sent by the NetworkAgent to ConnectivityService to pass the current value of the teardown
|
||||
* delay.
|
||||
* arg1 = teardown delay in milliseconds
|
||||
* @hide
|
||||
*/
|
||||
public static final int EVENT_TEARDOWN_DELAY_CHANGED = BASE + 6;
|
||||
|
||||
/**
|
||||
* The maximum value for the teardown delay, in milliseconds.
|
||||
* @hide
|
||||
*/
|
||||
public static final int MAX_TEARDOWN_DELAY_MS = 5000;
|
||||
|
||||
/**
|
||||
* Sent by ConnectivityService to the NetworkAgent to inform the agent of the
|
||||
* networks status - whether we could use the network or could not, due to
|
||||
@@ -197,7 +211,6 @@ public abstract class NetworkAgent {
|
||||
*/
|
||||
public static final int CMD_REPORT_NETWORK_STATUS = BASE + 7;
|
||||
|
||||
|
||||
/**
|
||||
* Network validation suceeded.
|
||||
* Corresponds to {@link NetworkCapabilities.NET_CAPABILITY_VALIDATED}.
|
||||
@@ -376,7 +389,7 @@ public abstract class NetworkAgent {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static final int CMD_NETWORK_DISCONNECTED = BASE + 23;
|
||||
public static final int CMD_NETWORK_DESTROYED = BASE + 23;
|
||||
|
||||
private static NetworkInfo getLegacyNetworkInfo(final NetworkAgentConfig config) {
|
||||
final NetworkInfo ni = new NetworkInfo(config.legacyType, config.legacySubType,
|
||||
@@ -581,8 +594,8 @@ public abstract class NetworkAgent {
|
||||
onNetworkCreated();
|
||||
break;
|
||||
}
|
||||
case CMD_NETWORK_DISCONNECTED: {
|
||||
onNetworkDisconnected();
|
||||
case CMD_NETWORK_DESTROYED: {
|
||||
onNetworkDestroyed();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -732,8 +745,8 @@ public abstract class NetworkAgent {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNetworkDisconnected() {
|
||||
mHandler.sendMessage(mHandler.obtainMessage(CMD_NETWORK_DISCONNECTED));
|
||||
public void onNetworkDestroyed() {
|
||||
mHandler.sendMessage(mHandler.obtainMessage(CMD_NETWORK_DESTROYED));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +863,29 @@ public abstract class NetworkAgent {
|
||||
queueOrSendNetworkInfo(mNetworkInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the teardown delay.
|
||||
*
|
||||
* The teardown delay is the time between when the network disconnects and when the native
|
||||
* network corresponding to this {@code NetworkAgent} is destroyed. By default, the native
|
||||
* network is destroyed immediately. If {@code teardownDelayMs} is non-zero, then when this
|
||||
* network disconnects, the system will instead immediately mark the network as restricted
|
||||
* and unavailable to unprivileged apps, but will defer destroying the native network until the
|
||||
* teardown delay timer expires.
|
||||
*
|
||||
* The interfaces in use by this network will remain in use until the native network is
|
||||
* destroyed and cannot be reused until {@link #onNetworkDestroyed()} is called.
|
||||
*
|
||||
* This method may be called at any time while the network is connected. It has no effect if
|
||||
* the network is already disconnected and the teardown delay timer is running.
|
||||
*
|
||||
* @param teardownDelayMs the teardown delay to set, or 0 to disable teardown delay.
|
||||
*/
|
||||
public void setTeardownDelayMs(
|
||||
@IntRange(from = 0, to = MAX_TEARDOWN_DELAY_MS) int teardownDelayMs) {
|
||||
queueOrSendMessage(reg -> reg.sendTeardownDelayMs(teardownDelayMs));
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the legacy subtype of this network agent.
|
||||
*
|
||||
@@ -1053,7 +1089,7 @@ public abstract class NetworkAgent {
|
||||
/**
|
||||
* Called when ConnectivityService has successfully destroy this NetworkAgent's native network.
|
||||
*/
|
||||
public void onNetworkDisconnected() {}
|
||||
public void onNetworkDestroyed() {}
|
||||
|
||||
/**
|
||||
* Requests that the network hardware send the specified packet at the specified interval.
|
||||
|
||||
Reference in New Issue
Block a user