diff options
Diffstat (limited to 'src/java/com/android/ims/rcs/uce/request/UceRequestManager.java')
-rw-r--r-- | src/java/com/android/ims/rcs/uce/request/UceRequestManager.java | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/java/com/android/ims/rcs/uce/request/UceRequestManager.java b/src/java/com/android/ims/rcs/uce/request/UceRequestManager.java index 565f94e4..1e4f0b01 100644 --- a/src/java/com/android/ims/rcs/uce/request/UceRequestManager.java +++ b/src/java/com/android/ims/rcs/uce/request/UceRequestManager.java @@ -148,11 +148,21 @@ public class UceRequestManager { List<EabCapabilityResult> getCapabilitiesFromCache(List<Uri> uriList); /** + * Retrieve the contact capabilities from the cache including the expired capabilities. + */ + List<EabCapabilityResult> getCapabilitiesFromCacheIncludingExpired(List<Uri> uriList); + + /** * Retrieve the contact availability from the cache. */ EabCapabilityResult getAvailabilityFromCache(Uri uri); /** + * Retrieve the contact availability from the cache including the expired capabilities. + */ + EabCapabilityResult getAvailabilityFromCacheIncludingExpired(Uri uri); + + /** * Store the given contact capabilities to the cache. */ void saveCapabilities(List<RcsContactUceCapability> contactCapabilities); @@ -241,6 +251,19 @@ public class UceRequestManager { * to remove the coordinator from the UceRequestRepository. */ void notifyRequestCoordinatorFinished(long requestCoordinatorId); + + /** + * Check whether the given uris are in the throttling list. + * @param uriList the uris to check if it is in the throttling list + * @return the uris in the throttling list + */ + List<Uri> getInThrottlingListUris(List<Uri> uriList); + + /** + * Add the given uris to the throttling list because the capabilities request result + * is inconclusive. + */ + void addToThrottlingList(List<Uri> uriList, int sipCode); } private RequestManagerCallback mRequestMgrCallback = new RequestManagerCallback() { @@ -255,11 +278,21 @@ public class UceRequestManager { } @Override + public List<EabCapabilityResult> getCapabilitiesFromCacheIncludingExpired(List<Uri> uris) { + return mControllerCallback.getCapabilitiesFromCacheIncludingExpired(uris); + } + + @Override public EabCapabilityResult getAvailabilityFromCache(Uri uri) { return mControllerCallback.getAvailabilityFromCache(uri); } @Override + public EabCapabilityResult getAvailabilityFromCacheIncludingExpired(Uri uri) { + return mControllerCallback.getAvailabilityFromCacheIncludingExpired(uri); + } + + @Override public void saveCapabilities(List<RcsContactUceCapability> contactCapabilities) { mControllerCallback.saveCapabilities(contactCapabilities); } @@ -350,12 +383,23 @@ public class UceRequestManager { public void notifyRequestCoordinatorFinished(long requestCoordinatorId) { mHandler.sendRequestCoordinatorFinishedMessage(requestCoordinatorId); } + + @Override + public List<Uri> getInThrottlingListUris(List<Uri> uriList) { + return mThrottlingList.getInThrottlingListUris(uriList); + } + + @Override + public void addToThrottlingList(List<Uri> uriList, int sipCode) { + mThrottlingList.addToThrottlingList(uriList, sipCode); + } }; private final int mSubId; private final Context mContext; private final UceRequestHandler mHandler; private final UceRequestRepository mRequestRepository; + private final ContactThrottlingList mThrottlingList; private volatile boolean mIsDestroyed; private OptionsController mOptionsCtrl; @@ -367,6 +411,7 @@ public class UceRequestManager { mContext = context; mControllerCallback = c; mHandler = new UceRequestHandler(this, looper); + mThrottlingList = new ContactThrottlingList(mSubId); mRequestRepository = new UceRequestRepository(subId, mRequestMgrCallback); logi("create"); } @@ -379,6 +424,7 @@ public class UceRequestManager { mControllerCallback = c; mHandler = new UceRequestHandler(this, looper); mRequestRepository = requestRepository; + mThrottlingList = new ContactThrottlingList(mSubId); } /** @@ -402,10 +448,18 @@ public class UceRequestManager { logi("onDestroy"); mIsDestroyed = true; mHandler.onDestroy(); + mThrottlingList.reset(); mRequestRepository.onDestroy(); } /** + * Clear the throttling list. + */ + public void resetThrottlingList() { + mThrottlingList.reset(); + } + + /** * Send a new capability request. It is called by UceController. */ public void sendCapabilityRequest(List<Uri> uriList, boolean skipFromCache, |