Loading services/core/java/com/android/server/location/contexthub/ContextHubEndpointBroker.java +0 −4 Original line number Diff line number Diff line Loading @@ -336,7 +336,6 @@ public class ContextHubEndpointBroker extends IContextHubEndpoint.Stub /* package */ void onEndpointSessionOpenRequest( int sessionId, HubEndpointInfo initiator, String serviceDescriptor) { if (!hasEndpointPermissions(initiator)) { // TODO(b/381102453): Post in async thread halCloseEndpointSessionNoThrow(sessionId, Reason.PERMISSION_DENIED); return; } Loading @@ -344,7 +343,6 @@ public class ContextHubEndpointBroker extends IContextHubEndpoint.Stub synchronized (mOpenSessionLock) { if (hasSessionId(sessionId)) { Log.e(TAG, "Existing session in onEndpointSessionOpenRequest: id=" + sessionId); // TODO(b/381102453): Post in async thread halCloseEndpointSessionNoThrow(sessionId, Reason.UNSPECIFIED); return; } Loading Loading @@ -403,7 +401,6 @@ public class ContextHubEndpointBroker extends IContextHubEndpoint.Stub + sessionId + ") with message: " + message); // TODO(b/381102453): Post in async thread sendMessageDeliveryStatus( sessionId, message.getMessageSequenceNumber(), ErrorCode.PERMANENT_ERROR); return; Loading @@ -414,7 +411,6 @@ public class ContextHubEndpointBroker extends IContextHubEndpoint.Stub mContextHubEndpointCallback.onMessageReceived(sessionId, message); } catch (RemoteException e) { Log.e(TAG, "RemoteException while calling onMessageReceived", e); // TODO(b/381102453): Post in async thread sendMessageDeliveryStatus( sessionId, message.getMessageSequenceNumber(), ErrorCode.TRANSIENT_ERROR); } Loading services/core/java/com/android/server/location/contexthub/ContextHubHalEndpointCallback.java +33 −14 Original line number Diff line number Diff line Loading @@ -21,6 +21,9 @@ import android.hardware.contexthub.HubMessage; import android.hardware.contexthub.IEndpointCallback; import android.hardware.contexthub.Message; import android.hardware.contexthub.MessageDeliveryStatus; import android.os.Handler; import android.os.HandlerThread; import android.os.Process; import android.os.RemoteException; /** IEndpointCallback implementation. */ Loading @@ -29,6 +32,11 @@ public class ContextHubHalEndpointCallback private final IEndpointLifecycleCallback mEndpointLifecycleCallback; private final IEndpointSessionCallback mEndpointSessionCallback; // Use this thread in case where the execution requires to be on an async service thread. private final HandlerThread mHandlerThread = new HandlerThread("Context Hub endpoint callback", Process.THREAD_PRIORITY_BACKGROUND); private Handler mHandler; /** Interface for listening for endpoint start and stop events. */ public interface IEndpointLifecycleCallback { /** Called when a batch of endpoints started. */ Loading Loading @@ -65,6 +73,9 @@ public class ContextHubHalEndpointCallback IEndpointSessionCallback endpointSessionCallback) { mEndpointLifecycleCallback = endpointLifecycleCallback; mEndpointSessionCallback = endpointSessionCallback; mHandlerThread.start(); mHandler = new Handler(mHandlerThread.getLooper()); } @Override Loading @@ -77,7 +88,7 @@ public class ContextHubHalEndpointCallback for (int i = 0; i < halEndpointInfos.length; i++) { endpointInfos[i] = new HubEndpointInfo(halEndpointInfos[i]); } mEndpointLifecycleCallback.onEndpointStarted(endpointInfos); mHandler.post(() -> mEndpointLifecycleCallback.onEndpointStarted(endpointInfos)); } @Override Loading @@ -87,40 +98,48 @@ public class ContextHubHalEndpointCallback for (int i = 0; i < halEndpointIds.length; i++) { endpointIds[i] = new HubEndpointInfo.HubEndpointIdentifier(halEndpointIds[i]); } mEndpointLifecycleCallback.onEndpointStopped(endpointIds, reason); mHandler.post(() -> mEndpointLifecycleCallback.onEndpointStopped(endpointIds, reason)); } @Override public void onEndpointSessionOpenRequest( int i, EndpointId destination, EndpointId initiator, String s) throws RemoteException { int sessionId, EndpointId destination, EndpointId initiator, String serviceDescriptor) throws RemoteException { HubEndpointInfo.HubEndpointIdentifier destinationId = new HubEndpointInfo.HubEndpointIdentifier(destination.hubId, destination.id); HubEndpointInfo.HubEndpointIdentifier initiatorId = new HubEndpointInfo.HubEndpointIdentifier(initiator.hubId, initiator.id); mEndpointSessionCallback.onEndpointSessionOpenRequest(i, destinationId, initiatorId, s); mHandler.post( () -> mEndpointSessionCallback.onEndpointSessionOpenRequest( sessionId, destinationId, initiatorId, serviceDescriptor)); } @Override public void onCloseEndpointSession(int i, byte b) throws RemoteException { mEndpointSessionCallback.onCloseEndpointSession(i, b); public void onCloseEndpointSession(int sessionId, byte reason) throws RemoteException { mHandler.post(() -> mEndpointSessionCallback.onCloseEndpointSession(sessionId, reason)); } @Override public void onEndpointSessionOpenComplete(int i) throws RemoteException { mEndpointSessionCallback.onEndpointSessionOpenComplete(i); public void onEndpointSessionOpenComplete(int sessionId) throws RemoteException { mHandler.post(() -> mEndpointSessionCallback.onEndpointSessionOpenComplete(sessionId)); } @Override public void onMessageReceived(int i, Message message) throws RemoteException { public void onMessageReceived(int sessionId, Message message) throws RemoteException { HubMessage hubMessage = ContextHubServiceUtil.createHubMessage(message); mEndpointSessionCallback.onMessageReceived(i, hubMessage); mHandler.post(() -> mEndpointSessionCallback.onMessageReceived(sessionId, hubMessage)); } @Override public void onMessageDeliveryStatusReceived(int i, MessageDeliveryStatus messageDeliveryStatus) throws RemoteException { public void onMessageDeliveryStatusReceived( int sessionId, MessageDeliveryStatus messageDeliveryStatus) throws RemoteException { mHandler.post( () -> mEndpointSessionCallback.onMessageDeliveryStatusReceived( i, messageDeliveryStatus.messageSequenceNumber, messageDeliveryStatus.errorCode); sessionId, messageDeliveryStatus.messageSequenceNumber, messageDeliveryStatus.errorCode)); } @Override Loading Loading
services/core/java/com/android/server/location/contexthub/ContextHubEndpointBroker.java +0 −4 Original line number Diff line number Diff line Loading @@ -336,7 +336,6 @@ public class ContextHubEndpointBroker extends IContextHubEndpoint.Stub /* package */ void onEndpointSessionOpenRequest( int sessionId, HubEndpointInfo initiator, String serviceDescriptor) { if (!hasEndpointPermissions(initiator)) { // TODO(b/381102453): Post in async thread halCloseEndpointSessionNoThrow(sessionId, Reason.PERMISSION_DENIED); return; } Loading @@ -344,7 +343,6 @@ public class ContextHubEndpointBroker extends IContextHubEndpoint.Stub synchronized (mOpenSessionLock) { if (hasSessionId(sessionId)) { Log.e(TAG, "Existing session in onEndpointSessionOpenRequest: id=" + sessionId); // TODO(b/381102453): Post in async thread halCloseEndpointSessionNoThrow(sessionId, Reason.UNSPECIFIED); return; } Loading Loading @@ -403,7 +401,6 @@ public class ContextHubEndpointBroker extends IContextHubEndpoint.Stub + sessionId + ") with message: " + message); // TODO(b/381102453): Post in async thread sendMessageDeliveryStatus( sessionId, message.getMessageSequenceNumber(), ErrorCode.PERMANENT_ERROR); return; Loading @@ -414,7 +411,6 @@ public class ContextHubEndpointBroker extends IContextHubEndpoint.Stub mContextHubEndpointCallback.onMessageReceived(sessionId, message); } catch (RemoteException e) { Log.e(TAG, "RemoteException while calling onMessageReceived", e); // TODO(b/381102453): Post in async thread sendMessageDeliveryStatus( sessionId, message.getMessageSequenceNumber(), ErrorCode.TRANSIENT_ERROR); } Loading
services/core/java/com/android/server/location/contexthub/ContextHubHalEndpointCallback.java +33 −14 Original line number Diff line number Diff line Loading @@ -21,6 +21,9 @@ import android.hardware.contexthub.HubMessage; import android.hardware.contexthub.IEndpointCallback; import android.hardware.contexthub.Message; import android.hardware.contexthub.MessageDeliveryStatus; import android.os.Handler; import android.os.HandlerThread; import android.os.Process; import android.os.RemoteException; /** IEndpointCallback implementation. */ Loading @@ -29,6 +32,11 @@ public class ContextHubHalEndpointCallback private final IEndpointLifecycleCallback mEndpointLifecycleCallback; private final IEndpointSessionCallback mEndpointSessionCallback; // Use this thread in case where the execution requires to be on an async service thread. private final HandlerThread mHandlerThread = new HandlerThread("Context Hub endpoint callback", Process.THREAD_PRIORITY_BACKGROUND); private Handler mHandler; /** Interface for listening for endpoint start and stop events. */ public interface IEndpointLifecycleCallback { /** Called when a batch of endpoints started. */ Loading Loading @@ -65,6 +73,9 @@ public class ContextHubHalEndpointCallback IEndpointSessionCallback endpointSessionCallback) { mEndpointLifecycleCallback = endpointLifecycleCallback; mEndpointSessionCallback = endpointSessionCallback; mHandlerThread.start(); mHandler = new Handler(mHandlerThread.getLooper()); } @Override Loading @@ -77,7 +88,7 @@ public class ContextHubHalEndpointCallback for (int i = 0; i < halEndpointInfos.length; i++) { endpointInfos[i] = new HubEndpointInfo(halEndpointInfos[i]); } mEndpointLifecycleCallback.onEndpointStarted(endpointInfos); mHandler.post(() -> mEndpointLifecycleCallback.onEndpointStarted(endpointInfos)); } @Override Loading @@ -87,40 +98,48 @@ public class ContextHubHalEndpointCallback for (int i = 0; i < halEndpointIds.length; i++) { endpointIds[i] = new HubEndpointInfo.HubEndpointIdentifier(halEndpointIds[i]); } mEndpointLifecycleCallback.onEndpointStopped(endpointIds, reason); mHandler.post(() -> mEndpointLifecycleCallback.onEndpointStopped(endpointIds, reason)); } @Override public void onEndpointSessionOpenRequest( int i, EndpointId destination, EndpointId initiator, String s) throws RemoteException { int sessionId, EndpointId destination, EndpointId initiator, String serviceDescriptor) throws RemoteException { HubEndpointInfo.HubEndpointIdentifier destinationId = new HubEndpointInfo.HubEndpointIdentifier(destination.hubId, destination.id); HubEndpointInfo.HubEndpointIdentifier initiatorId = new HubEndpointInfo.HubEndpointIdentifier(initiator.hubId, initiator.id); mEndpointSessionCallback.onEndpointSessionOpenRequest(i, destinationId, initiatorId, s); mHandler.post( () -> mEndpointSessionCallback.onEndpointSessionOpenRequest( sessionId, destinationId, initiatorId, serviceDescriptor)); } @Override public void onCloseEndpointSession(int i, byte b) throws RemoteException { mEndpointSessionCallback.onCloseEndpointSession(i, b); public void onCloseEndpointSession(int sessionId, byte reason) throws RemoteException { mHandler.post(() -> mEndpointSessionCallback.onCloseEndpointSession(sessionId, reason)); } @Override public void onEndpointSessionOpenComplete(int i) throws RemoteException { mEndpointSessionCallback.onEndpointSessionOpenComplete(i); public void onEndpointSessionOpenComplete(int sessionId) throws RemoteException { mHandler.post(() -> mEndpointSessionCallback.onEndpointSessionOpenComplete(sessionId)); } @Override public void onMessageReceived(int i, Message message) throws RemoteException { public void onMessageReceived(int sessionId, Message message) throws RemoteException { HubMessage hubMessage = ContextHubServiceUtil.createHubMessage(message); mEndpointSessionCallback.onMessageReceived(i, hubMessage); mHandler.post(() -> mEndpointSessionCallback.onMessageReceived(sessionId, hubMessage)); } @Override public void onMessageDeliveryStatusReceived(int i, MessageDeliveryStatus messageDeliveryStatus) throws RemoteException { public void onMessageDeliveryStatusReceived( int sessionId, MessageDeliveryStatus messageDeliveryStatus) throws RemoteException { mHandler.post( () -> mEndpointSessionCallback.onMessageDeliveryStatusReceived( i, messageDeliveryStatus.messageSequenceNumber, messageDeliveryStatus.errorCode); sessionId, messageDeliveryStatus.messageSequenceNumber, messageDeliveryStatus.errorCode)); } @Override Loading