diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:45 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:45 -0800 |
commit | d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /core/java/android/os/ServiceManagerNative.java | |
parent | 076357b8567458d4b6dfdcf839ef751634cd2bfb (diff) | |
download | frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.zip frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.tar.gz frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.tar.bz2 |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'core/java/android/os/ServiceManagerNative.java')
-rw-r--r-- | core/java/android/os/ServiceManagerNative.java | 174 |
1 files changed, 0 insertions, 174 deletions
diff --git a/core/java/android/os/ServiceManagerNative.java b/core/java/android/os/ServiceManagerNative.java deleted file mode 100644 index 2aab0e6..0000000 --- a/core/java/android/os/ServiceManagerNative.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.os; - - -/** - * Native implementation of the service manager. Most clients will only - * care about getDefault() and possibly asInterface(). - * @hide - */ -public abstract class ServiceManagerNative extends Binder implements IServiceManager -{ - /** - * Cast a Binder object into a service manager interface, generating - * a proxy if needed. - */ - static public IServiceManager asInterface(IBinder obj) - { - if (obj == null) { - return null; - } - IServiceManager in = - (IServiceManager)obj.queryLocalInterface(descriptor); - if (in != null) { - return in; - } - - return new ServiceManagerProxy(obj); - } - - public ServiceManagerNative() - { - attachInterface(this, descriptor); - } - - public boolean onTransact(int code, Parcel data, Parcel reply, int flags) - { - try { - switch (code) { - case IServiceManager.GET_SERVICE_TRANSACTION: { - data.enforceInterface(IServiceManager.descriptor); - String name = data.readString(); - IBinder service = getService(name); - reply.writeStrongBinder(service); - return true; - } - - case IServiceManager.CHECK_SERVICE_TRANSACTION: { - data.enforceInterface(IServiceManager.descriptor); - String name = data.readString(); - IBinder service = checkService(name); - reply.writeStrongBinder(service); - return true; - } - - case IServiceManager.ADD_SERVICE_TRANSACTION: { - data.enforceInterface(IServiceManager.descriptor); - String name = data.readString(); - IBinder service = data.readStrongBinder(); - addService(name, service); - return true; - } - - case IServiceManager.LIST_SERVICES_TRANSACTION: { - data.enforceInterface(IServiceManager.descriptor); - String[] list = listServices(); - reply.writeStringArray(list); - return true; - } - - case IServiceManager.SET_PERMISSION_CONTROLLER_TRANSACTION: { - data.enforceInterface(IServiceManager.descriptor); - IPermissionController controller - = IPermissionController.Stub.asInterface( - data.readStrongBinder()); - setPermissionController(controller); - return true; - } - } - } catch (RemoteException e) { - } - - return false; - } - - public IBinder asBinder() - { - return this; - } -} - -class ServiceManagerProxy implements IServiceManager { - public ServiceManagerProxy(IBinder remote) { - mRemote = remote; - } - - public IBinder asBinder() { - return mRemote; - } - - public IBinder getService(String name) throws RemoteException { - Parcel data = Parcel.obtain(); - Parcel reply = Parcel.obtain(); - data.writeInterfaceToken(IServiceManager.descriptor); - data.writeString(name); - mRemote.transact(GET_SERVICE_TRANSACTION, data, reply, 0); - IBinder binder = reply.readStrongBinder(); - reply.recycle(); - data.recycle(); - return binder; - } - - public IBinder checkService(String name) throws RemoteException { - Parcel data = Parcel.obtain(); - Parcel reply = Parcel.obtain(); - data.writeInterfaceToken(IServiceManager.descriptor); - data.writeString(name); - mRemote.transact(CHECK_SERVICE_TRANSACTION, data, reply, 0); - IBinder binder = reply.readStrongBinder(); - reply.recycle(); - data.recycle(); - return binder; - } - - public void addService(String name, IBinder service) - throws RemoteException { - Parcel data = Parcel.obtain(); - Parcel reply = Parcel.obtain(); - data.writeInterfaceToken(IServiceManager.descriptor); - data.writeString(name); - data.writeStrongBinder(service); - mRemote.transact(ADD_SERVICE_TRANSACTION, data, reply, 0); - reply.recycle(); - data.recycle(); - } - - public String[] listServices() throws RemoteException { - Parcel data = Parcel.obtain(); - Parcel reply = Parcel.obtain(); - data.writeInterfaceToken(IServiceManager.descriptor); - mRemote.transact(LIST_SERVICES_TRANSACTION, data, reply, 0); - String[] list = reply.readStringArray(); - reply.recycle(); - data.recycle(); - return list; - } - - public void setPermissionController(IPermissionController controller) - throws RemoteException { - Parcel data = Parcel.obtain(); - Parcel reply = Parcel.obtain(); - data.writeInterfaceToken(IServiceManager.descriptor); - data.writeStrongBinder(controller.asBinder()); - mRemote.transact(SET_PERMISSION_CONTROLLER_TRANSACTION, data, reply, 0); - reply.recycle(); - data.recycle(); - } - - private IBinder mRemote; -} |