diff options
| author | 2025-01-08 23:48:43 +0000 | |
|---|---|---|
| committer | 2025-01-09 00:45:01 +0000 | |
| commit | a696e9bbb0aa2fd3194e302566969979f48aa162 (patch) | |
| tree | b59e525dd44623d2cde5e432893ebe84255768ec | |
| parent | 4deeed992fdce24e74a58216d3c17214d2210c42 (diff) | |
Only send message status delivery if it requires a response
Bug: 388353789
Flag: android.chre.flags.offload_implementation
Test: Tests pass
Change-Id: Ie94c499db0e786a2c829e9d9749cc478df1f4db3
| -rw-r--r-- | services/core/java/com/android/server/location/contexthub/ContextHubEndpointBroker.java | 43 |
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; } /** |