summaryrefslogtreecommitdiff
path: root/services/QualifiedNetworksService/src/com/android
diff options
context:
space:
mode:
authorSewook Seo <sewookseo@google.com>2023-05-01 13:26:33 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2023-05-01 13:26:33 +0000
commite89dc03e000fd853bb2f70d22780575ab94e0405 (patch)
treed7c8a15a55acb6fdba0bec7b213c14db75e695d8 /services/QualifiedNetworksService/src/com/android
parentc940702ff6102e678cf159cdbc4cba6edc43ca57 (diff)
parentb7bd89e4243984ac6a6a5656b89e4edfbe627d7c (diff)
downloadTelephony-e89dc03e000fd853bb2f70d22780575ab94e0405.tar.gz
Merge "[QNS]check restrtict time expired."
Diffstat (limited to 'services/QualifiedNetworksService/src/com/android')
-rw-r--r--services/QualifiedNetworksService/src/com/android/telephony/qns/RestrictManager.java35
1 files changed, 27 insertions, 8 deletions
diff --git a/services/QualifiedNetworksService/src/com/android/telephony/qns/RestrictManager.java b/services/QualifiedNetworksService/src/com/android/telephony/qns/RestrictManager.java
index 64c3aa7..aefa469 100644
--- a/services/QualifiedNetworksService/src/com/android/telephony/qns/RestrictManager.java
+++ b/services/QualifiedNetworksService/src/com/android/telephony/qns/RestrictManager.java
@@ -139,6 +139,8 @@ class RestrictManager {
private static final int[] ignorableRestrictionsOnSingleRat =
new int[] {
RESTRICT_TYPE_GUARDING,
+ //Ignore throttling restriction at single RAT, let FWK control throttling.
+ RESTRICT_TYPE_THROTTLING,
RESTRICT_TYPE_RTP_LOW_QUALITY,
RESTRICT_TYPE_RESTRICT_IWLAN_IN_CALL,
RESTRICT_TYPE_FALLBACK_TO_WWAN_IMS_REGI_FAIL,
@@ -373,6 +375,15 @@ class RestrictManager {
}
}
+ boolean isRestrictionExpired(long elapsedRealTime) {
+ if (mReleaseTime != 0 && (mReleaseTime - elapsedRealTime < 0)) {
+ Log.d(mLogTag, restrictTypeToString(mRestrictType) + " was expired."
+ + "release time:" + mReleaseTime + ", now:" + elapsedRealTime);
+ return true;
+ }
+ return false;
+ }
+
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
@@ -397,20 +408,28 @@ class RestrictManager {
class RestrictInfo {
private int mTransportMode; // AccessNetworkConstants.TRANSPORT_TYPE_WWAN;
- private HashMap<Integer, Restriction> mRestrictionMap = new HashMap<>();
+ private Map<Integer, Restriction> mRestrictionMap = new ConcurrentHashMap<>();
RestrictInfo(int transportMode) {
mTransportMode = transportMode;
}
- HashMap<Integer, Restriction> getRestrictionMap() {
+ Map<Integer, Restriction> getRestrictionMap() {
return mRestrictionMap;
}
boolean isRestricted() {
+ checkUpExpirationTime();
return mRestrictionMap.size() != 0;
}
+ private void checkUpExpirationTime() {
+ if (mRestrictionMap.size() > 0) {
+ long now = QnsUtils.getSystemElapsedRealTime();
+ mRestrictionMap.entrySet().removeIf(e -> e.getValue().isRestrictionExpired(now));
+ }
+ }
+
/**
* This method returns if the restriction info has given restriction type.
*
@@ -673,7 +692,7 @@ class RestrictManager {
if ((reason & 1 << QnsConstants.RTP_LOW_QUALITY_REASON_NO_RTP) != 0) {
releaseRestriction(QnsUtils.getOtherTransportType(mTransportType),
RESTRICT_TYPE_GUARDING, true);
- HashMap<Integer, Restriction> restrictionMap = mRestrictInfos
+ Map<Integer, Restriction> restrictionMap = mRestrictInfos
.get(QnsUtils.getOtherTransportType(mTransportType))
.getRestrictionMap();
Restriction restrictionOtherSide = restrictionMap.get(
@@ -1134,7 +1153,7 @@ class RestrictManager {
int currGuardingTransport = QnsUtils.getOtherTransportType(mTransportType);
if (mRestrictInfos.get(currGuardingTransport) == null) return;
- HashMap<Integer, Restriction> restrictionMap =
+ Map<Integer, Restriction> restrictionMap =
mRestrictInfos.get(currGuardingTransport).getRestrictionMap();
Restriction restriction = restrictionMap.get(RESTRICT_TYPE_GUARDING);
@@ -1192,7 +1211,7 @@ class RestrictManager {
void addRestriction(int transport, Restriction restrictObj, long timeMillis) {
boolean needNotify = false;
- HashMap<Integer, Restriction> restrictionMap =
+ Map<Integer, Restriction> restrictionMap =
mRestrictInfos.get(transport).getRestrictionMap();
Restriction restriction = restrictionMap.get(restrictObj.mRestrictType);
Log.d(
@@ -1236,7 +1255,7 @@ class RestrictManager {
void addRestriction(int transport, int type, int[] releaseEvents, long timeMillis) {
boolean needNotify = false;
- HashMap<Integer, Restriction> restrictionMap =
+ Map<Integer, Restriction> restrictionMap =
mRestrictInfos.get(transport).getRestrictionMap();
Restriction restriction = restrictionMap.get(type);
Log.d(
@@ -1284,7 +1303,7 @@ class RestrictManager {
void releaseRestriction(int transport, int type, boolean skipNotify) {
boolean needNotify = false;
- HashMap<Integer, Restriction> restrictionMap =
+ Map<Integer, Restriction> restrictionMap =
mRestrictInfos.get(transport).getRestrictionMap();
Restriction restriction = restrictionMap.get(type);
Log.d(
@@ -1312,7 +1331,7 @@ class RestrictManager {
void processReleaseEvent(int transportType, int event) {
ArrayList<Integer> releaseList = new ArrayList<>();
- HashMap<Integer, Restriction> restrictMap =
+ Map<Integer, Restriction> restrictMap =
mRestrictInfos.get(transportType).getRestrictionMap();
Log.d(
mLogTag,