1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.os; 18 19 import libcore.util.NativeAllocationRegistry; 20 21 /** @hide */ 22 public class HwRemoteBinder implements IHwBinder { 23 private static final String TAG = "HwRemoteBinder"; 24 25 private static final NativeAllocationRegistry sNativeRegistry; 26 HwRemoteBinder()27 public HwRemoteBinder() { 28 native_setup_empty(); 29 30 sNativeRegistry.registerNativeAllocation( 31 this, 32 mNativeContext); 33 } 34 35 @Override queryLocalInterface(String descriptor)36 public IHwInterface queryLocalInterface(String descriptor) { 37 return null; 38 } 39 40 @Override transact( int code, HwParcel request, HwParcel reply, int flags)41 public native final void transact( 42 int code, HwParcel request, HwParcel reply, int flags) 43 throws RemoteException; 44 linkToDeath(DeathRecipient recipient, long cookie)45 public native boolean linkToDeath(DeathRecipient recipient, long cookie); unlinkToDeath(DeathRecipient recipient)46 public native boolean unlinkToDeath(DeathRecipient recipient); 47 native_init()48 private static native final long native_init(); 49 native_setup_empty()50 private native final void native_setup_empty(); 51 52 static { 53 long freeFunction = native_init(); 54 55 sNativeRegistry = new NativeAllocationRegistry( 56 HwRemoteBinder.class.getClassLoader(), 57 freeFunction, 58 128 /* size */); 59 } 60 sendDeathNotice(DeathRecipient recipient, long cookie)61 private static final void sendDeathNotice(DeathRecipient recipient, long cookie) { 62 recipient.serviceDied(cookie); 63 } 64 65 private long mNativeContext; 66 67 @Override equals(Object other)68 public final native boolean equals(Object other); 69 @Override hashCode()70 public final native int hashCode(); 71 } 72