summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2025-01-09 08:55:45 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2025-01-09 08:55:45 -0800
commitdbbd3fe0eeb2d3a5dfc63520f3d39e39a844240c (patch)
tree20b253341ae8f5c376e57908d7a591fc6a9e3cee
parent1a2292b92b063e1419f152d30df88681a340e5f0 (diff)
parenta696e9bbb0aa2fd3194e302566969979f48aa162 (diff)
Merge "Only send message status delivery if it requires a response" into main
-rw-r--r--services/core/java/com/android/server/location/contexthub/ContextHubEndpointBroker.java43
1 files changed, 22 insertions, 21 deletions
diff --git a/services/core/java/com/android/server/location/contexthub/ContextHubEndpointBroker.java b/services/core/java/com/android/server/location/contexthub/ContextHubEndpointBroker.java
index f5ed4d586131..3018cfdd0f67 100644
--- a/services/core/java/com/android/server/location/contexthub/ContextHubEndpointBroker.java
+++ b/services/core/java/com/android/server/location/contexthub/ContextHubEndpointBroker.java
@@ -420,6 +420,25 @@ public class ContextHubEndpointBroker extends IContextHubEndpoint.Stub
}
/* package */ void onMessageReceived(int sessionId, HubMessage message) {
+ byte code = onMessageReceivedInternal(sessionId, message);
+ if (code != ErrorCode.OK && message.isResponseRequired()) {
+ sendMessageDeliveryStatus(
+ sessionId, message.getMessageSequenceNumber(), code);
+ }
+ }
+
+ /* package */ void onMessageDeliveryStatusReceived(
+ int sessionId, int sequenceNumber, byte errorCode) {
+ mTransactionManager.onMessageDeliveryResponse(sequenceNumber, errorCode == ErrorCode.OK);
+ }
+
+ /* package */ boolean hasSessionId(int sessionId) {
+ synchronized (mOpenSessionLock) {
+ return mSessionInfoMap.contains(sessionId);
+ }
+ }
+
+ private byte onMessageReceivedInternal(int sessionId, HubMessage message) {
HubEndpointInfo remote;
synchronized (mOpenSessionLock) {
if (!isSessionActive(sessionId)) {
@@ -429,9 +448,7 @@ public class ContextHubEndpointBroker extends IContextHubEndpoint.Stub
+ sessionId
+ ") with message: "
+ message);
- sendMessageDeliveryStatus(
- sessionId, message.getMessageSequenceNumber(), ErrorCode.PERMANENT_ERROR);
- return;
+ return ErrorCode.PERMANENT_ERROR;
}
remote = mSessionInfoMap.get(sessionId).getRemoteEndpointInfo();
}
@@ -453,28 +470,12 @@ public class ContextHubEndpointBroker extends IContextHubEndpoint.Stub
+ ". "
+ mPackageName
+ " doesn't have permission");
- sendMessageDeliveryStatus(
- sessionId, message.getMessageSequenceNumber(), ErrorCode.PERMISSION_DENIED);
- return;
+ return ErrorCode.PERMISSION_DENIED;
}
boolean success =
invokeCallback((consumer) -> consumer.onMessageReceived(sessionId, message));
- if (!success) {
- sendMessageDeliveryStatus(
- sessionId, message.getMessageSequenceNumber(), ErrorCode.TRANSIENT_ERROR);
- }
- }
-
- /* package */ void onMessageDeliveryStatusReceived(
- int sessionId, int sequenceNumber, byte errorCode) {
- mTransactionManager.onMessageDeliveryResponse(sequenceNumber, errorCode == ErrorCode.OK);
- }
-
- /* package */ boolean hasSessionId(int sessionId) {
- synchronized (mOpenSessionLock) {
- return mSessionInfoMap.contains(sessionId);
- }
+ return success ? ErrorCode.OK : ErrorCode.TRANSIENT_ERROR;
}
/**