diff options
Diffstat (limited to 'src/java/com/android/ims/rcs/uce/request/OptionsRequestCoordinator.java')
-rw-r--r-- | src/java/com/android/ims/rcs/uce/request/OptionsRequestCoordinator.java | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/java/com/android/ims/rcs/uce/request/OptionsRequestCoordinator.java b/src/java/com/android/ims/rcs/uce/request/OptionsRequestCoordinator.java index 9ab5fa83..a150dd6d 100644 --- a/src/java/com/android/ims/rcs/uce/request/OptionsRequestCoordinator.java +++ b/src/java/com/android/ims/rcs/uce/request/OptionsRequestCoordinator.java @@ -20,6 +20,7 @@ import static android.telephony.ims.stub.RcsCapabilityExchangeImplBase.COMMAND_C import android.os.RemoteException; import android.telephony.ims.RcsContactUceCapability; +import android.telephony.ims.RcsUceAdapter; import android.telephony.ims.aidl.IRcsUceControllerCallback; import com.android.ims.rcs.uce.request.UceRequestManager.RequestManagerCallback; @@ -96,6 +97,11 @@ public class OptionsRequestCoordinator extends UceRequestCoordinator { private static final RequestResultCreator sNotNeedRequestFromNetworkCreator = (taskId, response) -> RequestResult.createSuccessResult(taskId); + // The RequestResult creator of the request timeout. + private static final RequestResultCreator sRequestTimeoutCreator = + (taskId, response) -> RequestResult.createFailedResult(taskId, + RcsUceAdapter.ERROR_REQUEST_TIMEOUT, 0L); + // The callback to notify the result of the capabilities request. private IRcsUceControllerCallback mCapabilitiesCallback; @@ -144,6 +150,9 @@ public class OptionsRequestCoordinator extends UceRequestCoordinator { case REQUEST_UPDATE_NO_NEED_REQUEST_FROM_NETWORK: handleNoNeedRequestFromNetwork(request); break; + case REQUEST_UPDATE_TIMEOUT: + handleRequestTimeout(request); + break; default: logw("onRequestUpdated(OptionsRequest): invalid event " + event); break; @@ -248,6 +257,24 @@ public class OptionsRequestCoordinator extends UceRequestCoordinator { } /** + * This method is called when the framework does not receive receive the result for + * capabilities request. + */ + private void handleRequestTimeout(OptionsRequest request) { + CapabilityRequestResponse response = request.getRequestResponse(); + logd("handleRequestTimeout: " + response.toString()); + + // Finish this request. + request.onFinish(); + + // Remove this request from the activated collection and notify RequestManager. + long taskId = request.getTaskId(); + RequestResult requestResult = sRequestTimeoutCreator.createRequestResult(taskId, + response); + moveRequestToFinishedCollection(taskId, requestResult); + } + + /** * Trigger the capabilities updated callback. */ private void triggerCapabilitiesReceivedCallback(List<RcsContactUceCapability> capList) { |