IBridgeService.java 源代码


package com.x8zs.bridge;

import android.os.Binder;
import android.os.IBinder;
import android.os.IInterface;
import android.os.Parcel;
import com.x8zs.bridge.IPackCallback;

public interface IBridgeService extends IInterface {

    public static class Default implements IBridgeService {
        @Override
        public IBinder asBinder() {
            return null;
        }

        @Override
        public void registerPackCallback(String str, IPackCallback iPackCallback) {
        }
    }

    public static abstract class Stub extends Binder implements IBridgeService {
        private static final String DESCRIPTOR = "com.x8zs.bridge.IBridgeService";
        static final int TRANSACTION_registerPackCallback = 1;

        public static class Proxy implements IBridgeService {
            public static IBridgeService sDefaultImpl;
            private IBinder mRemote;

            Proxy(IBinder iBinder) {
                this.mRemote = iBinder;
            }

            @Override
            public IBinder asBinder() {
                return this.mRemote;
            }

            public String getInterfaceDescriptor() {
                return Stub.DESCRIPTOR;
            }

            @Override
            public void registerPackCallback(String str, IPackCallback iPackCallback) {
                IBinder iBinder;
                Parcel obtain = Parcel.obtain();
                Parcel obtain2 = Parcel.obtain();
                try {
                    obtain.writeInterfaceToken(Stub.DESCRIPTOR);
                    obtain.writeString(str);
                    if (iPackCallback != null) {
                        iBinder = iPackCallback.asBinder();
                    } else {
                        iBinder = null;
                    }
                    obtain.writeStrongBinder(iBinder);
                    if (!this.mRemote.transact(1, obtain, obtain2, 0) && Stub.getDefaultImpl() != null) {
                        Stub.getDefaultImpl().registerPackCallback(str, iPackCallback);
                    } else {
                        obtain2.readException();
                    }
                } finally {
                    obtain2.recycle();
                    obtain.recycle();
                }
            }
        }

        public Stub() {
            attachInterface(this, DESCRIPTOR);
        }

        public static IBridgeService asInterface(IBinder iBinder) {
            if (iBinder == null) {
                return null;
            }
            IInterface queryLocalInterface = iBinder.queryLocalInterface(DESCRIPTOR);
            if (queryLocalInterface != null && (queryLocalInterface instanceof IBridgeService)) {
                return (IBridgeService) queryLocalInterface;
            }
            return new Proxy(iBinder);
        }

        public static IBridgeService getDefaultImpl() {
            return Proxy.sDefaultImpl;
        }

        public static boolean setDefaultImpl(IBridgeService iBridgeService) {
            if (Proxy.sDefaultImpl == null) {
                if (iBridgeService != null) {
                    Proxy.sDefaultImpl = iBridgeService;
                    return true;
                }
                return false;
            }
            throw new IllegalStateException("setDefaultImpl() called twice");
        }

        @Override
        public IBinder asBinder() {
            return this;
        }

        @Override
        public boolean onTransact(int i6, Parcel parcel, Parcel parcel2, int i7) {
            if (i6 != 1) {
                if (i6 != 1598968902) {
                    return super.onTransact(i6, parcel, parcel2, i7);
                }
                parcel2.writeString(DESCRIPTOR);
                return true;
            }
            parcel.enforceInterface(DESCRIPTOR);
            registerPackCallback(parcel.readString(), IPackCallback.Stub.asInterface(parcel.readStrongBinder()));
            parcel2.writeNoException();
            return true;
        }
    }

    void registerPackCallback(String str, IPackCallback iPackCallback);
}