Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dbbd3fe0 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Only send message status delivery if it requires a response" into main

parents 1a2292b9 a696e9bb
Loading
Loading
Loading
Loading
+22 −21
Original line number Diff line number Diff line
@@ -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;
    }

    /**